GIL全局解释器锁
""" In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. """ ''' ps:python解释器有很多种,最常见的就是CPython解释器 GIL本质就是一把互斥锁:将并发变成串行牺牲效率保证数据安全 用来阻止同一个进程下的多个线程的同时执行(同一个进程内多个线程无法实现并行,但能并发 GIL的存在就是因为CPython解释器的内存管理不是线程安全的 为什么不安全呢? 在Python解释器中有一个垃圾回收机制,那也是一串代码,也是一个进程, 在并行时,可能会造成一个问题,其他线程变量名还没有赋值时,垃圾回收机制就将值回收了 就会造成变量名找不到值 所以需要并发 垃圾回收机制 1.引用计数 2.标记清除 3.分代回收 研究python的多线程是否有用需要分情况讨论 四个任务 计算密集型的 10s 单核情况下 开线程更省资源 多核情况下 开进程 10s 开线程 40s 四个任务 IO密集型的