多处理,返回函数的值

时间:2018-06-14 09:39:36

标签: python multiprocessing

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]

谢谢

1 个答案:

答案 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))))