Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从multiprocessing.Process获取返回值?_Python_Multiprocessing - Fatal编程技术网

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

Python 如何从multiprocessing.Process获取返回值?,python,multiprocessing,Python,Multiprocessing,我试图在代码中实现并行化,但无法从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

我试图在代码中实现并行化,但无法从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()
result = {'neutral': [returned_list], 'bad': ....
函数进程加载NLTK语料库,对文档进行一些转换并返回一个列表。我需要使用不同的参数调用此函数三次,以处理三个文件夹。所以我在考虑并行运行它。我想使用标签中的键将返回的列表添加到字典中。结果应该如下所示:

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()
result = {'neutral': [returned_list], 'bad': ....

我读过关于队列和管道的文章,但我不知道如何在我的案例中使用它们,所以我很高兴能得到任何帮助

你可以这样试试

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']}]

看。你可以做proc_count=lenlabels,因为它将是一个小数字。它现在工作得很好,谢谢。显然,由于一些袋子的缘故,Spyder IDLE没有工作