首頁 > 後端開發 > Python教學 > 我什麼時候應該使用 Python 未錄製的「ThreadPool」進行並行處理?

我什麼時候應該使用 Python 未錄製的「ThreadPool」進行並行處理?

Mary-Kate Olsen
發布: 2024-12-12 17:45:15
原創
155 人瀏覽過

When Should I Use Python's Undocumented `ThreadPool` for Parallel Processing?

多處理中基於執行緒的池

多處理模組提供了一個強大的「Pool」類,用於使用單獨的進程並行化任務。然而,這種方法會因進程建立而產生開銷。對於在實際函數呼叫期間釋放 GIL 的 IO 綁定操作,使用執行緒可以獲得更好的效能。

引入 ThreadPool 類別

與普遍的看法相反,多處理模組確實提供了基於執行緒的池介面。這個隱藏的寶石可以透過 from multiprocessing.pool import ThreadPool 訪問,提供了一種使用線程並行化任務的便捷方法。

儘管其未記錄狀態,ThreadPool 類別使用包裝 python 的虛擬 Process 類別實作了多處理池介面執行緒。這個虛擬的 Process 類別駐留在 multiprocessing.dummy 模組中,該模組提供了基於線程的完整多處理介面。

範例用法

與ProcessPool 類似,ThreadPool 可以用於並行化映射函數:

import multiprocessing.pool

def long_running_func(p):
    c_func_no_gil(p)

p = multiprocessing.pool.ThreadPool(4)
xs = p.map(long_running_func, range(100))
登入後複製

注意:

注意:注意:注意:注意:在所有情況下,ThreadPool 類別都不像ProcessPool那樣高效,特別是當任務需要大量 CPU 時間時。

以上是我什麼時候應該使用 Python 未錄製的「ThreadPool」進行並行處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板