如何恢复传递给multiprocessing.Process的函数的返回值?

在下面的示例代码中,我想恢复该函数的返回值worker。我该怎么做呢?此值存储在哪里?

示例代码:

import multiprocessing

def worker(procnum):

'''worker function'''

print str(procnum) + ' represent!'

return procnum

if __name__ == '__main__':

jobs = []

for i in range(5):

p = multiprocessing.Process(target=worker, args=(i,))

jobs.append(p)

p.start()

for proc in jobs:

proc.join()

print jobs

输出:

0 represent!

1 represent!

2 represent!

3 represent!

4 represent!

[<Process(Process-1, stopped)>, <Process(Process-2, stopped)>, <Process(Process-3, stopped)>, <Process(Process-4, stopped)>, <Process(Process-5, stopped)>]

我似乎在中存储的对象中找不到相关的属性jobs。

回答:

使用共享变量进行通信。例如这样:

import multiprocessing

def worker(procnum, return_dict):

'''worker function'''

print str(procnum) + ' represent!'

return_dict[procnum] = procnum

if __name__ == '__main__':

manager = multiprocessing.Manager()

return_dict = manager.dict()

jobs = []

for i in range(5):

p = multiprocessing.Process(target=worker, args=(i,return_dict))

jobs.append(p)

p.start()

for proc in jobs:

proc.join()

print return_dict.values()

以上是 如何恢复传递给multiprocessing.Process的函数的返回值? 的全部内容, 来源链接: utcz.com/qa/433729.html

回到顶部