Python和真正的并发线程

Python和真正的并发线程,python,multithreading,concurrency,gil,greenlets,Python,Multithreading,Concurrency,Gil,Greenlets,我已经读了几个小时了,我完全明白python多线程是如何比单线程更快的 这个问题确实来自吉尔。如果有GIL,并且在任何一个时间只有一个线程在运行,那么多线程怎么能比单个线程更快呢 我读到,通过一些操作,GIL被释放(比如写入文件)。这就是多线程更快的原因吗 还有关于小绿叶。这些对并发性有什么帮助?到目前为止,我看到它们的所有用途都是在函数和不太复杂的屈服函数之间轻松切换 编辑:像Tornado这样的服务器如何处理数千个并发连接?你是对的-当python等待C代码执行时,GIL被释放,这就是如何获

我已经读了几个小时了,我完全明白python多线程是如何比单线程更快的

这个问题确实来自吉尔。如果有GIL,并且在任何一个时间只有一个线程在运行,那么多线程怎么能比单个线程更快呢

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

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


编辑:像Tornado这样的服务器如何处理数千个并发连接?

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


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

关于GIL的有用答案+1。我认为GIL只对CPU限制的进程重要。即使存在GIL,IO绑定进程仍然可以从线程(响应性等)中获益。此外,OP询问了Tornado的性能——答案是它使用非阻塞IO,因此事件循环中不需要线程。