2014-10-30 64 views
1

我想在服务器程序中使用两个线程,一个用于侦听使用Twisted库的客户端的任何通信,另一个用于执行其他计算服务器。在我尝试实现这些线程时,似乎python线程库不支持并行线程,如this问题所回答的那样。我想知道是否有任何其他的Python库来解决这个问题?或者其他方式来规避这种限制? 预先感谢您。用于联网的Python线程 - 线程不能并行运行

+1

['multiprocessing'](https://docs.python.org/2/library/multiprocessing.html)模块使用并发进程而不是线程,所以它不受GIL的影响。 – dano 2014-10-30 14:19:16

回答

2

Python的GIL(全局解释器锁)可以防止两个线程同时执行Python代码。幸运的是,它不包括I/O,所以如果你的线程执行大量的网络,数据库或文件系统,那么通常的线程就可以正常工作。他们不会让你利用多核心进行计算,但会让其他线程前进,而其中任何一个线程都在等待发生的事情。

如果您的需求更多的是计算而不是I/O,那么线程(在Python中实现)将无济于事。更好地使用multiprocessing模块(自Python 2.6以来的标准),它使用'线程'API生成多个进程,每个进程都有一个独立的Python解释器,因此它是自己的GIL。

+0

谢谢你的回答! – user823743 2014-10-31 14:05:45