用于网络的Python线程 - 线程不并行运行

时间:2014-10-30 14:00:57

标签: python multithreading twisted

我正在尝试在服务器程序中使用两个线程,一个用于侦听来自使用Twisted库的客户端的任何通信,另一个用于在服务器上执行其他计算。在我尝试实现线程时,似乎python线程库不支持this问题中回答的并行线程。我想知道是否有任何其他python库来解决这个问题?或任何其他方式来规避这种限制? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

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