我正在研究不同的方式来避免Windows上Python 2.7的GIL限制。在Python上避免GIL
一种方法似乎是multiprocessing
模块,但它使用进程而不是线程,看起来好像很贵。我发现了一个名为Parallel Python的pp
包,它声称它避免了GIL,但是我没有看到执行速度的改进,并且每当我运行任何基准时,只有一个处理器很忙 - 所以这就像是同时运行线程,但不是并联...
有没有一个模块可以避免GIL的严重限制?
非常感谢您
我正在研究不同的方式来避免Windows上Python 2.7的GIL限制。在Python上避免GIL
一种方法似乎是multiprocessing
模块,但它使用进程而不是线程,看起来好像很贵。我发现了一个名为Parallel Python的pp
包,它声称它避免了GIL,但是我没有看到执行速度的改进,并且每当我运行任何基准时,只有一个处理器很忙 - 所以这就像是同时运行线程,但不是并联...
有没有一个模块可以避免GIL的严重限制?
非常感谢您
Cython可以为您解决问题的选项。它与CPython完全兼容。你可以简单地release and acquire GIL:
with nogil:
# code executed with GIL released
你可能想指定*为什么*正好GIL是你的问题。这将有助于适当回答范围问题。 –
我想在一台多核机器上运行一堆线程来并行处理任务,最终完成串行处理。 – gt6989b
流程为什么会“昂贵”?如果您目前的最大性能问题是管理流程的成本,那么您很可能不得不下降到C++(这种情况不太可能)。 –