并发编程(三)
并发编程(三) >>> 思维导图 >>> 中二青年 GIL全局解释器锁 Cpython解释器:python解释器有很多种,最常见的就是Cpython解释器 GIL本质也是一把互斥锁 将并发变成串行牺牲效率保证数据的安全 用来阻止同一个进程下的多个线程的同时执行 (同一个进程内多个线程无法实现并行但是可以实现并发) GIL的存在是因为CPython解释器的内存管理不是线程安全的 因为进程内的垃圾回收机制也是一个线程,所以有可能造成其他线程例如赋值时,刚创建值,还没指向变量名就被回收,再赋值直接报错 python的多线程没法利用多核优势 是不是就是没有用了? 研究python的多线程是否有用需要分情况讨论 四个任务 计算密集型的 10s 单核情况下 开线程更省资源 多核情况下 开进程 10s 开线程 40s 四个任务 IO密集型的 单核情况下 开线程更节省资源 多核情况下 开线程更节省资源 python的多线程到底有没有用 需要看情况而定 并且肯定是有用的 多进程+多线程配合使用 多线程不能使用多核是所有解释型语言的通病 GIL与普通互斥锁 from threading import Thread import time n = 100 def task(): global n tmp = n # time.sleep(1) n = tmp -1 t_list = [] for i