Warum funktioniert Parallel Python, wie es funktioniert?
-
28-09-2019 - |
Frage
In Parallel Python, warum ist es notwendig, alle Module wickeln die Funktion in diesem Job Vorlage Aufruf übergeben werden mit Variablen und Namespaces müssen zusammen - wie notwendig ist es Modulebene „global“ Variablen zu erhalten? (Wenn das ist alles, was los ist)
einreichen Funktion:
submit(self, func, args=(), depfuncs=(), modules=(), callback=None, callbackargs=(),group='default', globals=None)
Submits function to the execution queue
func - function to be executed
args - tuple with arguments of the 'func'
depfuncs - tuple with functions which might be called from 'func'
modules - tuple with module names to import
callback - callback function which will be called with argument
list equal to callbackargs+(result,)
as soon as calculation is done
callbackargs - additional arguments for callback function
group - job group, is used when wait(group) is called to wait for
jobs in a given group to finish
globals - dictionary from which all modules, functions and classes
will be imported, for instance: globals=globals()
Lösung
Der Grund, dass pp
so funktioniert, es funktioniert, ist, dass es für jeden Arbeitnehmer eine neue Instanz des Python-Interpreter macht, das von etwas völlig unabhängig ist, die vor oder da gelaufen ist. Dies stellt sicher, dass es keine unbeabsichtigten Nebenwirkungen, wie __future__
Einfuhren aktiv in dem Arbeitsprozess zu sein. Das Problem dabei ist, dass es richtig mehr Dinge Weise kompliziert zu bekommen macht, und nach meiner Erfahrung mit pp
, nicht besonders robust. pp
nicht versuchen, die Dinge ein wenig einfacher für den Benutzer zu machen, scheint aber mehr Probleme einzuführen, als sie in ihren Bemühungen, löst das zu tun.
Wenn ich Code schreiben war, die von Anfang an auf einen Cluster für den Einsatz waren, würde ich wahrscheinlich am Ende mit pp
, aber ich habe festgestellt, dass die Anpassung bestehenden Code zur Arbeit mit pp
ist ein Alptraum.