Pourquoi Python parallèle fonctionne comme il le fait?
-
28-09-2019 - |
Question
En Python parallèle, pourquoi est-il nécessaire d'envelopper tous les modules de la fonction passée aura besoin ainsi que des variables et espaces de noms dans cet appel de soumission d'emploi - comment est-il nécessaire pour préserver au niveau du module des variables « globales »? (Si c'est tout ce qui se passe)
fonction d'envoi:
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()
La solution
La raison pour laquelle pp
fonctionne comme il le fait, est que cela fait une nouvelle instance de l'interpréteur Python pour tous les travailleurs, ce qui est tout à fait indépendant de tout ce qui a couru avant ou depuis. Cela garantit qu'il n'y a pas d'effets secondaires indésirables, tels que les importations de __future__
étant actif dans le processus de travail. Le problème est qu'il fait place des choses plus compliquées pour obtenir le droit, et dans mon expérience avec pp
, pas particulièrement robuste. pp
ne essayer de rendre les choses un peu plus facile pour l'utilisateur, mais semble présenter plus de problèmes qu'elle résout dans ses efforts pour le faire.
Si je devais écrire un code qui a été conçu pour être utilisé sur un cluster depuis le début, je finirais probablement à l'aide pp
, mais je l'ai trouvé que l'adaptation du code existant au travail avec pp
est un cauchemar.