我一直对Python的全局解释器锁的性能没有任何问题。我不得不让一些东西成为线程安全的--尽管有一些常见的建议,GIL并不能自动保证线程安全--但是我有一个程序,它通常可以运行10个以上的线程,所有的线程都可以在任何时候激活,包括在一起。它是一个有点复杂的异步消息传递系统。
我理解多处理,甚至在这个程序中使用了芹菜,但是要解决这个问题集的多处理问题,解决方案必须非常复杂。
我运行的是2.7,尽管存在性能损失,但仍使用递归锁。
我的问题是:我会遇到GIL的扩展问题吗?到目前为止,我还没有看到它的性能问题。测量此is...problematic。有没有很多线程或者类似的东西,你碰到了,它就开始卡住了?GIL性能与在单核CPU上执行多线程代码有显着差异吗?
谢谢!
发布于 2016-08-26 11:44:21
GIL是一个复杂的主题,如果没有您的代码,很难解释您的情况下的确切行为。所以我不能告诉你你将来会不会遇到麻烦。如果可以的话,我可以建议您将项目升级到Python3的最新版本。在Python3中对GIL做了很多改进。
这与Python将中断的线程数完全不同。一般的规则是:线程越多,问题就越多。最复杂的是从1到2。
在某些情况下,尤其是在执行C代码或完成I/O时,GIL会被释放。这允许代码并行运行。使用现代CPU的高级功能,将代码限制在只有一个CPU是不明智的。
https://stackoverflow.com/questions/39156864
复制相似问题