繁体   English   中英

多处理返回多个值

[英]Multiprocessing Return Multiple Values

我正在尝试使用 Multiprocessing.Process 来计算一个 function ,它接受两个 arguments 并返回两个值。 作为一个简化示例,我尝试使用以下代码

import multiprocessing

# function to loop over
def my_func(x,y):
    return x+y, x-y

# worker function
def worker(procnum_1, procnum_2, x, y, return_dict):
    print("procnum_1: "+str(procnum_1)+", procnum_2: "+str(procnum_2))
    return_dict[procnum_1][procnum_2] = my_func(x[procnum_1],y[procnum_2])

if __name__ == '__main__':
    # lists to apply the function to
    x_list = [1,2,3,4,5,6,7]
    y_list = [11,12,13,14,15,16,17]

    manager = multiprocessing.Manager()
    return_dict = manager.dict()
    jobs = []
    for i in range(len(x_list)):
        for j in range(len(y_list)):
            p = multiprocessing.Process(target=worker, args=(i,j,x_list,y_list,return_dict))
            jobs.append(p)
            p.start()

    for proc in jobs:
        proc.join()
    # print the result
    print(return_dict.values())

然而,这个 function 返回一个空数组 [ ]。 此外,代码不会打印工人 function 内部的行。 我知道如何检索通过 multiprocessing.Process 调用的 function 返回的多个值 答案使用了 function multiprocessing.Pool。 我正在寻找使用 multiprocessing.Process 的答案。

尝试这个:

def worker(procnum_1, procnum_2, x, y, return_dict):
    print("procnum_1: "+str(procnum_1)+", procnum_2: "+str(procnum_2))
    if procnum_1 not in return_dict:
        return_dict[procnum_1] = {}
    return_dict[procnum_1][procnum_2] = my_func(x[procnum_1],y[procnum_2])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM