繁体   English   中英

如何从multiprocessing.Process获取返回值?

[英]How can i get a return value from multiprocessing.Process?

我正在尝试在代码中实现并行化,但无法从multiprocessing.Process获取结果。 我有一个看起来像这样的代码:

if __name__ == '__main__':
    labels = ['neutral', 'bad', 'good']
    procs = []
    for i in labels:
        p = Process(target = process, args = (i, ))
        procs.append(p)
        p.start()
    for proc in procs:
        proc.join()

函数process加载NLTK语料库,对文档进行一些转换并返回一个列表。 我需要使用不同的参数调用此函数三次,以处理三个文件夹。 所以我正在考虑并行运行它。 我想使用labels的键将返回列表添加到字典中。 结果应如下所示:

result = {'neutral': [returned_list], 'bad': ....

我已经阅读了有关“ QueuePipe但我不知道如何在我的情况下使用它们,因此我很乐意提供帮助。

你可以这样尝试

import multiprocessing

def action(data):
    return {data:["computed_action"]}

labels = ['neutral', 'bad', 'good']
proc_count = 5
result = multiprocessing.Pool(proc_count).map(action,labels)
print(result)

产量

[{'neutral': ['computed_action']}, {'bad': ['computed_action']}, {'good': ['computed_action']}]

暂无
暂无

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

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