从Ubuntu 10.10升级到12.04后,无论是multiprocessing.map还是joblib都只使用1个CPU。

6

我有一些完美运行的Python代码,使用了多进程模块,在我的机器上加载了所有8个CPU并使其达到100%。

在我从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。有什么建议可以解决这个问题吗?


2
您可能可以使用 taskset来解决此问题-请查看我的答案 这里 - ali_m
2
multiprocessing.cpu_count() 返回哪个值?如果不是8,则存在问题。 - Roland Smith
我无法在13.04上重现这个问题。 - Apalala
4
如果您已经解决了问题,那么您应该将其写成答案并标记为已解决。这有助于减少混乱,并且也有助于搜索引擎的使用。 - Gareth Davidson
@user1084871 请将您的答案发布为答案。 - endolith
显示剩余3条评论
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接