我正在研究不同的方式來避免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++(這種情況不太可能)。 –