6

我有一些完美运行的 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。关于我应该看什么来解决这个问题的任何想法?

编辑:

正如 ali_m 在此处的评论中以及在 我导入 numpy 后为什么多处理只使用单个内核的答案中所指出的那样?问题与numpy弄乱 cpu 亲和力有关。打电话

os.system('taskset -p 0xffffffff %d' % os.getpid())

在我做任何多处理之前为我解决了这个问题。

4

0 回答 0