文章目錄
- 1. Joblib 并行計算的兩種模式
- 多進程(Multiprocessing,適用于 CPU 密集型任務)
- 多線程(Multithreading,適用于 I/O 密集型任務)
- 2. Joblib 的基本用法
- 3. Joblib 多進程示例(適用于 CPU 密集型任務)
- 示例:計算平方
- 4. Joblib 多線程示例(適用于 I/O 密集型任務)
- 示例:爬取網頁
- 5. 選擇合適的并行模式
- 6. 使用 parallel_backend 控制后端
- 7. parallel_backend 與 Parallel 直接指定 backend 的區別
- 區別
joblib 是一個 Python 庫,用于高效的并行計算和緩存。它支持 多進程(multiprocessing) 和 多線程(multithreading),主要用于加速 CPU 密集型和 I/O 密集型任務。
1. Joblib 并行計算的兩種模式
多進程(Multiprocessing,適用于 CPU 密集型任務)
每個任務在單獨的進程中執行,避免 GIL(全局解釋器鎖)限制。
適用于 數值計算、矩陣運算、圖像處理等 CPU 密集型任務。
后端:multiprocessing 或 loky(默認)。
多線程(Multithreading,適用于 I/O 密集型任務)
線程共享同一個進程,適用于 文件 I/O、網絡請求、數據庫查詢等任務。
由于 Python 的 GIL,不適用于 CPU 密集型任務。
后端:threading。
2. Joblib 的基本用法
joblib 的并行計算主要通過 Parallel 和 delayed 來實現:
from joblib import Parallel, delayedresults = Parallel(n_jobs=4)(delayed(func)(x) for x in iterable)
n_jobs=4:使用 4 個線程或進程并行計算。
delayed(func)(x):將 func(x) 延遲執行,供 Parallel 并行調度。
3. Joblib 多進程示例(適用于 CPU 密集型任務)
示例:計算平方
import time