2条python';s的多处理进程停留在单个处理器上

2条python';s的多处理进程停留在单个处理器上,python,multiprocessing,Python,Multiprocessing,我的python脚本本质上与下面的示例代码类似,它无法将两个处理器用于通过多处理模块创建的两个独立进程 创建、执行和联合两个过程,但所有过程都发生在单个核心上 我很难理解问题是什么,因为在不同的机器上,一切都如预期的那样multiprocessing.cpu_count()在任何一台机器上返回4 所以我的问题有点模糊:进程没有使用所有可用处理器的原因可能是什么 示例代码: import numpy as np import multiprocessing n = 10 mat = np.ran

我的python脚本本质上与下面的示例代码类似,它无法将两个处理器用于通过
多处理
模块创建的两个独立进程

创建、执行和联合两个过程,但所有过程都发生在单个核心上

我很难理解问题是什么,因为在不同的机器上,一切都如预期的那样
multiprocessing.cpu_count()
在任何一台机器上返回
4

所以我的问题有点模糊:进程没有使用所有可用处理器的原因可能是什么

示例代码:

import numpy as np
import multiprocessing

n = 10
mat = np.random.randn(n, n)
vec = np.ones((n, 1))


def compprod():
    print np.dot(mat, vec)
    return


def compsum(times):
    print times*vec
    return

p1 = multiprocessing.Process(target=compprod)
p2 = multiprocessing.Process(target=compsum, args=(n, ))

p1.start()
p2.start()

p1.join()
p2.join()

print 'done'

如果目标函数(例如,
compprod
compsum
)很快结束,那么这两个进程可能会在同一个内核上运行。感谢您的提示。但在我的例子中,情况可能并非如此。因为函数需要几个小时才能终止。事实上,我真的可以观察到两个并行的进程,但在同一个核心上。我没弄错吧?看这个问题:。Numpy在导入时会更改CPU相关性,这可能会导致它无法在单个CPU上运行,即使是使用
多处理
。提供的链接向您展示了如何解决此问题。我不能肯定这就是你要打的,但值得一试。