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()
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top