def fun(a,b):
return (a,b)
if __name__ == '__main__':
jobs = []
for i in range(10): # I want to use 10 CPUs
p = multiprocessing.Process(target=fun,args=(a,b,))
jobs.append(p)
p.start()
基本上,我想在10个处理器上执行函数fun,所以我得到10个结果,但我想将返回值存储在两个不同的数组中,所以我最终会得到这样的结果
x = [a,a,a,...,a]
y = [b,b,b,...,b]
谢谢
答案 0 :(得分:0)
可能是一个糟糕的解决方案(因为令人困惑且难以阅读),但由于你的源只是两个常量,所以它有效。除此之外,它返回元组,而不是列表:
import multiprocessing
import itertools
a=0.5
b=0.7
PROCS=10
def fun(a,b):
return (a,b)
if __name__ == '__main__':
with multiprocessing.Pool(processes=PROCS) as pool:
result_a, result_b = zip(*pool.starmap(fun, zip(itertools.repeat(a,PROCS),itertools.repeat(b,PROCS))))