从Ubuntu 10.10升级到12.04后,multiprocessing.map和joblib仅使用1个CPU
我之前有一段运行得很好、能把我电脑上8个CPU都用到100%的Python代码,使用的是多进程模块。
但是在我把系统从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都工作。有没有什么建议可以帮我解决这个问题?
1 个回答
0
这个内容是从这里转过来的,原问题是由@user1084871提问的。
正如@ali_m在评论中提到的,以及在这个问题的回答中提到的,问题和
numpy
有关,它会影响CPU的使用。调用os.system('taskset -p 0xffffffff %d' % os.getpid())
在我进行任何多进程操作之前,这个方法解决了我的问题。