Python和真正的并发线程

Ant*_*ton 5 python concurrency multithreading gil greenlets

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

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

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

关于greenlets.这些如何帮助并发?到目前为止,我看到的所有目的都是在功能和较简单的屈服功能之间轻松切换.

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

wim*_*wim 8

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

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