5

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

这个问题确实源于 GIL。如果有 GIL,而且任何时候只有一个线程真正在运行,那么多线程怎么能比单线程快呢?

我读到了一些操作 GIL 被释放(比如写入文件)。这就是使多线程更快的原因吗?

关于绿叶。这些对并发有什么帮助?到目前为止,我看到的所有目的都是在函数和不太复杂的屈服函数之间轻松切换。

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

4

1 回答 1

8

你是对的 - 当 python 等待 C 代码执行时,GIL 被释放,这就是你如何获得一些加速。但是一次只能执行一行python。请注意,这是一个 CPython(实现)细节,而不是严格地说是语言 python 本身的一部分。例如,Jython 和 IronPython 没有 GIL,可以充分利用多处理器系统

如果您需要在 CPython 中进行真正的并发编程,您应该考虑多处理而不是线程。

于 2013-02-08T03:20:39.140 回答