我想在服务器程序中使用两个线程,一个用于侦听使用Twisted库的客户端的任何通信,另一个用于执行其他计算服务器。在我尝试实现这些线程时,似乎python线程库不支持并行线程,如this问题所回答的那样。我想知道是否有任何其他的Python库来解决这个问题?或者其他方式来规避这种限制? 预先感谢您。用于联网的Python线程 - 线程不能并行运行
1
A
回答
2
Python的GIL(全局解释器锁)可以防止两个线程同时执行Python代码。幸运的是,它不包括I/O,所以如果你的线程执行大量的网络,数据库或文件系统,那么通常的线程就可以正常工作。他们不会让你利用多核心进行计算,但会让其他线程前进,而其中任何一个线程都在等待发生的事情。
如果您的需求更多的是计算而不是I/O,那么线程(在Python中实现)将无济于事。更好地使用multiprocessing
模块(自Python 2.6以来的标准),它使用'线程'API生成多个进程,每个进程都有一个独立的Python解释器,因此它是自己的GIL。
+0
谢谢你的回答! – user823743 2014-10-31 14:05:45
相关问题
- 1. 并行运行的Python线程
- 2. 并行运行的python线程?
- 3. 的Windows线程(C运行时,并行线程,的std ::线程)
- 4. 线程不能同时运行。 (Python)
- 5. 并行运行线程
- 6. python多线程长线程运行
- 7. Android:并行并行运行的线程
- 8. 用于运行可执行文件的python多线程进程
- 9. PHP Pthreads - 线程不并行运行
- 10. 一次运行多线程并让线程快速运行?
- 11. Python:线程仍在运行
- 12. Python正在运行线程
- 13. 同时运行Python线程
- 14. 使用线程并行运行方法
- 15. 的Python:多线程不运行
- 16. 在Python中运行不同的线程
- 17. 并行处理Python线程
- 18. 关于并行POSIX线程
- 19. 并行与线程 - 性能
- 20. 线程并行
- 21. Python线程不与硒同时运行
- 22. 停止并用新线程替换正在运行的线程
- 23. 为什么线程不能在java中并行运行?
- 24. OpenMP并行的区域线程关联
- 25. 线程不能同时运行
- 26. 线程不能继续运行
- 27. 新线程运行的UI线程
- 28. 简单的并行线程和信号程序不会运行
- 29. 运行并发线程执行
- 30. 关于线程和可运行程序
['multiprocessing'](https://docs.python.org/2/library/multiprocessing.html)模块使用并发进程而不是线程,所以它不受GIL的影响。 – dano 2014-10-30 14:19:16