Python和真正的并发线程

时间:2013-02-08 03:09:57

标签: python multithreading concurrency gil greenlets

我已经阅读了几个小时了,我可以完全弄清楚python多线程如何比单个线程更快。

这个问题真的源于GIL。如果有GIL,并且任何时候只有一个线程正在运行,那么多线程如何比单个线程更快?

我读到了GIL发布的一些操作(比如写入文件)。是什么让多线程更快?

关于greenlets。这些如何帮助并发?到目前为止,我看到的所有目的都是在功能和不太复杂的良率函数之间轻松切换。

编辑:世界上像Tornado这样的服务器如何处理成千上万的同时连接?

1 个答案:

答案 0 :(得分:8)

你是对的 - 当python等待C代码执行时,GIL被释放,这就是你如何获得一些加速。但是一次只能执行一行python。请注意,这是一个CPython(实现)细节,并不严格地说是语言python本身的一部分。例如,Jython and IronPython have no GIL and can fully exploit multiprocessor systems

如果您需要在CPython中进行真正的并发编程,那么您应该查看multiprocessing而不是线程。