我有以下功能和字典解析:并行化字典解析
def function(name, params):
results = fits.open(name)
<do something more to results>
return results
dictionary = {name: function(name, params) for name in nameList}
,并希望这种并行。任何简单的方法来做到这一点?
在here我发现可以使用multiprocessing
模块,但无法理解如何让它将我的结果传递给我的字典。
备注:如果可能,请给出可应用于返回结果的函数的答案。
注2::在主要操纵拟合文件和分配结果的一类
UPDATE
因此,这里对我来说到底有什么工作(从@code_onkel答案):使用tqdm
def function(name, params):
results = fits.open(name)
<do something more to results>
return results
def function_wrapper(args):
return function(*args)
params = [...,...,..., etc]
p = multiprocessing..Pool(processes=(max([2, mproc.cpu_count() // 10])))
args_generator = ((name, params) for name in names)
dictionary = dict(zip(names, p.map(function_wrapper, args_generator)))
只有部分工作,因为我可以用我的自定义栏为tqdm恢复到默认酒吧仅迭代。
好像你可以使用'Pool.map'到'nameList'上,返回2个元组''(name,function(name,params))'',然后连接结果并使用它创建一个字典... – mgilson
The短语是“词典理解”,而不是“综合词典”。 – user2357112