[英]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.