说点看书的体会,欢迎讨论~
Python 白皮儿书——《 Python 核心编程第二版》,里讲:
“
对 Python 虚拟机的访问由全局解释器锁( Global Interpreter Lock , GIL )来控制,正式这个锁,能保证同一时刻只有一个线程运行。
"
看完 18.3.1 ,感觉, Python 代码不能实现多个 CPU 共同快跑,只能一次运行一个线程,虽然开了多个线程,但 GIL 强制一次只执行一个(做爬虫的同事说, Python 爬虫只能让一个 CPU 吃饱,和其他 CPU 无关)
换言之, Python 是把多线程的执行模型,强行退化到 1 个 CPU ,退化到流水线处理模式。
但是, 18.3.1 最后一段,的意思,我的理解是:
这种 Python “多线程”,会让 I/O 操作在阻塞时间内,通过 GIL 切换到其他线程。
所以,对某些界面操作,硬件调用,是有用的。
但纯用 Python 代码,想完成计算方向的并行,是没有卵用的。


Python 白皮儿书——《 Python 核心编程第二版》,里讲:
“
对 Python 虚拟机的访问由全局解释器锁( Global Interpreter Lock , GIL )来控制,正式这个锁,能保证同一时刻只有一个线程运行。
"
看完 18.3.1 ,感觉, Python 代码不能实现多个 CPU 共同快跑,只能一次运行一个线程,虽然开了多个线程,但 GIL 强制一次只执行一个(做爬虫的同事说, Python 爬虫只能让一个 CPU 吃饱,和其他 CPU 无关)
换言之, Python 是把多线程的执行模型,强行退化到 1 个 CPU ,退化到流水线处理模式。
但是, 18.3.1 最后一段,的意思,我的理解是:
这种 Python “多线程”,会让 I/O 操作在阻塞时间内,通过 GIL 切换到其他线程。
所以,对某些界面操作,硬件调用,是有用的。
但纯用 Python 代码,想完成计算方向的并行,是没有卵用的。

