知识储备:
""" 1、什么事GIL 全局解释器锁,本质就是一把互斥锁,是加到解释器身上的,每一个python进程内都有这么一把锁i 2、有了GIL会对单进程下的多个线程造成什么样的影响 多线程要想执行自己的代码,首先需要争抢GIL,对所有待执行的线程来说,GIL就相当于执行权限 同一时刻只有一个线程争抢成功,即单进程下的多线线程同一时刻只有一个在运行 意味着但进程下的多线程没有并行的效果,但是有并发的效果 PS:分散于不同进程内的线程不会去争抢同一把GIL,只有同一个进程的多个线程才争抢同一把GIL 3、为什么要有GIL Cpython解释器的内存管理机制(垃圾回收线程)不是“线程安全”的 4、GIL与自定义胡知所的异同,多个线程争抢GIL与自定义互斥锁的过程分析 相同: 互斥锁 不同点: GIL是加到解释器上的,作用于全局 自定义互斥锁作用于局部 单进程内的所有线程都会去抢GIL 单进程内的只有一部分线程会去抢自定义的互斥锁 5、什么时候用python的多线程,是么时候用多进程,为什么? 单进程下的多线线程是无法并行,无法并行意味着不能利用多核优势 CPU是执行计算工作,多个CPU意味提升计算性能 CPU是无法做I/O操作,意味着多个CPU在I/O操作面前提升的性能效益微乎其微 当程序是I/O密集型情况下,多核对性能的提升微不足道,此时可以使用python的多线程 当程序是计算密集型情况下,一定要用上多核优势,此时可以使用python多进程 ** 多个线程争抢GIL与自定义互斥锁的过程分析 ** 多个线程先争抢GIL锁, """