python的多线程,这是个老生常谈的话题了,网上资料也一大把。python默认的threading
模块对多线程提供了支持,但实际多个threading.Thread
实例无法并行运行(不是无法并发哦!)。
一句话概括答案:python的线程实质是操作系统原生的线程,而每个线程要执行python代码的话,需要获得对应代码解释器的锁GIL。一般我们运行python程序都只有一个解释器,这样不同线程需要获得同一个锁才能执行各自的代码,互斥了,于是代码就不能同时运行了。
好的,接下来我们细细讲解这句话背后的故事:
多线程并行测试
首先我们通过一些代码来测试多线程是否真的并行: