是的,您可以在不同的进程中运行每个函数,以便利用多个核心。下面是一个例子:from multiprocessing import Process
def add(a,b):
return a+b
def sub(s, t):
return s-t
def mult(y,x):
return y*x
if __name__ == "__main__":
# construct a different process for each function
processes = [Process(target=add, args=(3,4)),
Process(target=sub, args=(3,4)),
Process(target=mult, args=(2,3))]
# kick them off
for process in processes:
process.start()
# now wait for them to finish
for process in processes:
process.join()
不需要强制操作系统在特定的内核上运行特定的进程。如果CPU上有多个内核,操作系统将在这些核心上调度进程。在这里不太可能需要使用任何类型的CPU pinning。在
上面的例子太简单了,看不到你的多个核心参与。相反,你可以尝试这个例子,这是一个简单的CPU限制问题的变化,也就是说,它只是一个需要更多计算的版本。在
^{pr2}$
如果您查看您的top输出(按1查看核心),您应该会看到这样的情况:三个核心以100%的速度使用(或接近它)。这不需要做任何CPU固定。更容易信任操作系统来实现并行性。在