返回信息流最近研究python,看到关于多线程的地方,发现python的解释器是单线程的,也就是说同一时刻只能有一个线程在跑,这不就宣告python的多线程是伪的吗?
基于此,python的多线程对于IO密集型任务有效;对cpu密集型没什么帮助。
请问我的想法对否 ?呼叫大牛
这是一条镜像帖。来源:北邮人论坛 / python / #7231同步于 2015/6/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
python的多线程是“伪”多线程吗
fanyuelin555
2015/6/4镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
官方的Python的线程真的是用pthread实现的。但是,解释器有一个global interpreter lock,每个线程想要执行,就必须获取这个锁才能执行,只有时间片用完了(执行了100个Python虚拟机指令),或者开始IO,才会释放。所以同时只有一个线程在跑。确实,如果是CPU密集型的,那么官方的Python实现就完了。
PyPy计划有一个STM分支,通过transactional memory来取消这个GIL锁,让多个Python线程可以真的同时跑。虽然目前还很不完美,但起码性能已经可以随着CPU数量而现行扩展了。