python多线程(一)

一个进程至少有一个线程
python的标准库提供了两个模块:_thread和threading,_thread是低级模块,threading是高级模块,对_thread进行了封装
特殊:
python的线程虽然是真正的线程,但解释器执行代码时,有一个GIL锁:Global Interpreter Lock,任何python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁,所以,多线程在python中只能交替执行,即使100个线程跑在100核CPU上,也只能用到1个核。
python虽然不能利用多线程实现多核任务,但可以通过多进程实现多核任务,多个python进程有各自独立的GIL锁,互不影响。

猜你喜欢

转载自blog.csdn.net/kong2030/article/details/81545840