我有以下功能和字典解析:並行化字典解析
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