python--多线程threading

2020-2-11 线程是cpu分配和调度的基本单位 线程是进程的实体,一个进程里面可以有多个线程,但是多个线程同时只能属于一个进程 线程在执行过程中是共享内存的,它自身只需占用系统必不可少的内存即可,所以线程的并发 所消耗的内存也是最少的 单线程和多线程,有利有弊, 多线程的话在需要大量的计算量的情况下明显的提升了效率,而单线程就是一条路走到底, 执行完一个之后接着下一个,多线程的话,就是利用cpu的轮询机制,每个线程都执行一段时间 俗称雨露均沾,因为cpu的执行速度非常快1s可以执行10多亿次,人类是完全感觉不到他中间切换 的过程,所以就有了我们的多线程, 我们可以用 线程名(变量).join 来让该线程有优先执行权,后面的线程就会等待他执行完毕之后 再执行,也就是我们所说的vip,他就是多线程里边的靓仔,所以他有优先权, 但是用了多线程的话也是有坏处的,前面有提到过,就是线程和线程之间同时调用一个变量的时候, 会发生资源抢占,导致最后的结果并不正确,聪明的开发者想到了互斥锁这个东西,来解决了线程 之间的资源抢占问题。上互斥锁也很简单。下面有注释, 接触了一下python的多线程,其中线程分为3步 1,导入模块 2,创建线程 3,执行线程 首先我们来导入模块 import threading 这样模块就导入了,导入模块之后创建线程 a=threading.Thread(target=(需要执行的函数),args=(给函数传递的参数)) # 参数可以默认是元组,一个值的话要(i,),也可以是一个字典 a.start()# 这样就启动了线程了,是不是很简单呢, 还可以通过for来同时启动多个线程 可以给子线程加上守护主线程,(主线程挂掉之后子线程也会挂掉,默认是false,也就是不守护) def work(): for x in range(10): lock.acquier() # 这里表示上了互斥锁 print('这里是work',x) lock.release() # 这里表示释放了互斥锁 for x in range(10): lock=threading.Lock() # 这里创建了一把互斥锁, a=threading.Thread(target=(),args=()) a.start() 后面待续。。。。。。。
搜索