如何创建一个充满进程输出的字典?

时间:2019-06-14 13:56:36

标签: python multiprocessing

我正在尝试创建一个字典,其中填充了从进程本身返回的数据,每个进程本身都运行一个需要多个参数的函数。

#list_of_values is a list of integer values, value1 und value2 are strings
def example(list_of_values, value1, value2):

    manager = multiprocessing.Manager()
    dictionary = manager.dict()
    pool = multiprocessing.Pool(processes=4)

    #boolean_test is a function that gets one int and 2 strings as args
    for b in list_of_values:
        dictionary[b] = pool.apply_async(boolean_test,(b, value1, value2))

    pool.close()
    pool.join() 

因此,我希望这些进程处理整个list_of_values,并将每个输出保存在字典中,并且键属于该输出。 我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

您的方法存在的问题是,您可能会期望得到除您之外的其他东西-您不会描述任何错误,只是有些错误。

As per documentation,apply_async返回AsyncResult对象。您可以使用.get方法(同样,根据文档)提取结果。

要在join之后立即对整个字典执行此操作(届时所有线程将退出),请使用list / dict理解:

{key: value.get() for (key, value) in dictionary.items()}