[英]Both multiprocessing.map and joblib use only 1 cpu after upgrade from Ubuntu 10.10 to 12.04
我有一些完美運行的 python 代碼,它使用多處理模塊並以 100% 的速度在我的機器上加載所有 8 個 CPU。
在我從 Ubuntu 10.10 升級到 12.04 之后(最明顯的事情,也許我做了其他破壞一切的事情),它停止工作了。 經過大量調試,我發現即使在最簡單的用例中,兩個模塊也只使用 1 個 CPU:
from pylab import *
import multiprocessing as mp
from joblib import Parallel, delayed
def f(i):
# Slow calculation
x = 1
for j in range(100000): x = cos(x)
print i, x
if __name__ == '__main__':
# Try to multiprocess with multiprocessing
mp.Pool(processes=8).map(f, range(100))
# Try to multiprocess with joblib
Parallel(n_jobs=8)(delayed(f)(i) for i in range(100))
我需要在我的系統中使用所有 8 個 CPU。 關於我應該如何解決問題的任何想法?
解決方案移自@user1084871的問題帖。
正如@ali_m在此處的評論和對為什么多處理在我導入 numpy 后僅使用單個內核的回答中指出的那樣? 該問題與
numpy
搞亂 cpu 親和力有關。 呼喚os.system('taskset -p 0xffffffff %d' % os.getpid())
在我做任何多處理之前為我解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.