python-线程

多任务:操作系统可以同时完成多个任务 (单核,双核,四核)
并发:任务数大于cpu的核数叫并发,多个任务交替执行,并发看起来时一起运行其实时一个假象
并行:任务数小于或者等于cpu的核数叫并行,并行才能真正意义上多个任务一起运行
注:线程实现不了并行
 
线程
多线程程序的执行顺序时不确定的
全局变量:如果多个线程同时对同一个全局变量操作,会出现资源竞争问题,从而数据结果会不正确
同步:同步就是协同步调,按预定的先后次序运行,一个任务执行完成以后另外一个任务才能执行
互斥锁:保证同一时刻只有一个线程去执行代码,其他线程没有抢到锁会等待
    当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制
    线程同步和加上互斥锁把多任务瞬间改成单任务,性能会下降。
死锁:以直等待对方释放锁的情景叫做死锁
  创建锁:变量名 = thread.Lock()
  锁定:变量名.acquire()
  释放锁: 变量名.release()
    如果这个锁之前是没有上锁的,那么acquire不会堵塞
    如果在调用acquire对这个锁上所之前,它已经被其他线程上了锁,那么此时acquire会堵塞,直到这个锁被解锁为止。
 
导入线程模块名:import thread
  创建线程方法:thread.Threading()
  执行线程方法:创建变量名.start()
  threading.active_count() :返回当前进程中线程的个数,返回的个数中包含主进程。
  threading.enumerate() :返回当前运行中的Thread对象列表。线程只有执行后才会放进活动线程列表
  threading.setDaemon(True): 表示守住主线程,主线程退出子线程直接销毁不再执行代码
  threading.current_thread():获取当前代码执行的线程对象
  线程变量名.join():同步线程
 
  注1:主线程会等待子线程执行完才会结束退出
  注2:主线程与子进程之间添加join方法可以存在同步,按预定的先后次序一个一个运行
posted @ 2018-05-14 15:02  庆长  阅读(211)  评论(1编辑  收藏  举报