本节内容
  1. 进程、与线程区别
  2. python GIL全局解释器锁
  3. 线程
    1. 语法
    2. join
    3. 线程锁之Lock\Rlock\信号量
    4. 将线程变为守护进程
    5. Event事件 
    6. queue队列
    7. 生产者消费者模型
    8. Queue队列
    9. 开发一个线程池
  1. 进程
    1. 语法
    2. 进程间通讯
    3. 进程池    
 
ssh
 
ssh_sftp
 
 
 
 
SSH密钥
RSH -非对称密钥验证
 
公钥:public key
私钥: privat key
 
10.0.0.31 ----连接----> 10.0.0.41
私钥 公钥
 
10.0.0.31 生成密钥对ssh-keygen
 
 
进程和线程
线程:(一堆指令)就是os操作系统去调度CPU操作运算的最小单位
进程:一堆资源的集合,不具备执行的属性,要操作CPU,先必须创建一个线程。--->一个进程最少包含一个线程(主线程)才能执行。。例如qq就是一个进程,
 
线程4、同一个进程的不同线程之间可以相互交流;两个进程想交流了必须通过一个中间代理
5、一个线程可以控制和操作同一进程中的其他线程;但是进程只能操作子进程
 
存储速度: cpu>内存>文件
一个程序不能访问另一个程序:程序就是一个进程,两个进程之间不可相互访问
 
eg. :
一次性启动50个线程,统一等最后的结果:
解:先创建一个临时列表,把所有的结果添加进去,然后循环列表
import threading
import time
 
#一、直接调用
start_time =time.time()
t_obj = []
def run(n):
print("hello",n)
time.sleep(2)
 
for i in range(50):
t= threading.Thread(target=run, args=("t-%s"%i,))
t.start()
t_obj.append(t)
 
for t in t_obj:
t.join()
print("t-%s has finished..."%i)
 
print("cost time : ",time.time()-start_time)
print("well done!!")
 
 
 
 
threading.current_thread() #查看进程类型
threading.active_count()#查看活动的线程
 
守护进程(守护线程):依赖与主线程存活,主进程执行完毕,所有的守护线程也跟着结束,程序退出。
 
gil锁
用户锁
 
递归锁rlock:多级锁防锁死
 
 
Semaphore(信号量)
import threading,time
 
def run(n):
semaphore.acquire()
time.sleep(1)
print("run the thread: %s" %n)
semaphore.release()
 
if __name__ == "__main__":
semaphore = threading.BoundedSemaphore(5) #最多同时允许5个线程同时运行
for i in range(20):
t =threading.Thread(target=run,args=(i,))
t.start()
 
while threading.active_count() !=1 :
pass
else:
print("--- all threads done ---")
 
 
 
 
 
优点:1、程序的解耦
2、提高效率
 
 
 

最新文章

  1. Daily Scrum02 12.08
  2. MySQL创建一个用户,指定一个数据库 授权
  3. <c:if>条件判断 和 取值做乘法运算
  4. ChainOfResponsibility
  5. 在eclipse如何删除无效的maven build
  6. synchronized关键字使用剖析
  7. 使用subst创建虚拟磁盘及设置分区卷标
  8. HTTP层 —— 中间件
  9. 使用Newtonsoft.Json序列化和反序列化对象(源码)
  10. WHU 1572 Cyy and Fzz (AC自动机 dp )
  11. navicat连接oracle时发现 ORA-12737 set CHS16GBK
  12. [个人介绍]关于Hallmeow
  13. Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台之应用数据分析
  14. java核心卷笔记--P48字符串3.6.5
  15. git小技巧
  16. FragmentTabHost切换Fragment时保存状态,避免切换Fragment走onCreateView和onDestroyView方法;
  17. memcache 在php中的用法
  18. IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题
  19. Java反射初探 ——“当类也学会照镜子”
  20. 洛谷 P1138 第k小整数

热门文章

  1. Android之HttpURLConnection
  2. easyui 中datagrid 点击行的事件
  3. Pow 算法
  4. Spark RDD aggregateByKey
  5. AppScan 测试需要输入用户名密码的网站
  6. MVC中获取模型属性的Range和StringLength验证特性设置
  7. heading python decorator
  8. 使用 xsd.exe 命令工具将 xsd 架构生成 类(CS) 文件
  9. flask-admin章节一:使用chartkick画报表
  10. win2008 IIS与tomcat整合