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方法可以存在同步,按预定的先后次序一个一个运行

猜你喜欢

转载自www.cnblogs.com/qingchang/p/9036085.html