我正在尝试创建一个字典,其中填充了从进程本身返回的数据,每个进程本身都运行一个需要多个参数的函数。
#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,并将每个输出保存在字典中,并且键属于该输出。 我在这里做什么错了?
答案 0 :(得分:0)
您的方法存在的问题是,您可能会期望得到除您之外的其他东西-您不会描述任何错误,只是有些错误。
As per documentation,apply_async返回AsyncResult
对象。您可以使用.get
方法(同样,根据文档)提取结果。
要在join
之后立即对整个字典执行此操作(届时所有线程将退出),请使用list / dict理解:
{key: value.get() for (key, value) in dictionary.items()}