ich die folgende Funktion und Wörterbuch Verständnis haben:Parallelisierung ein Wörterbuch Verständnis
def function(name, params):
results = fits.open(name)
<do something more to results>
return results
dictionary = {name: function(name, params) for name in nameList}
und möchte dies parallelisieren. Irgendein einfacher Weg, dies zu tun?
In here Ich habe gesehen, dass das multiprocessing
Modul verwendet werden kann, aber konnte nicht verstehen, wie es meine Ergebnisse an mein Wörterbuch weitergeben kann.
HINWEIS: Wenn möglich, geben Sie bitte eine Antwort, die auf jede Funktion angewendet werden kann, die ein Ergebnis zurückgibt.
ANMERKUNG 2: das ist Manipulation vor allem die Anfälle am Ende für mich die Ergebnisse in einer Klasse
UPDATE
Also hier ist, was funktioniert hat (von @code_onkel Antwort-Datei) und die Zuordnung:
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)))
mit tqdm funktionierte nur teilweise, da ich meine benutzerdefinierte Bar nutzen könnte als tqdm mit den Iterationen nur auf einen Standard bar zurückkehrt.
Scheint so, als könnten Sie 'Pool.map' über' nameList' verwenden, 2 Tupel '(name, function (name, params))' 'zurückgeben und dann die Ergebnisse verketten und daraus ein ... – mgilson
Begriff ist "dict Verständnis", nicht "umfassendes Wörterbuch". – user2357112