Pregunta

En Python paralelo, ¿por qué es necesario envolver cualquier módulo de la función pasada tendrá que junto con las variables y los espacios de nombres en esa llamada de envío de trabajos - cuán necesario es que para preservar las variables de módulo de nivel "global"? (Si eso es todo lo que está pasando)

Función de presentar:

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()
¿Fue útil?

Solución

La razón de que pp funciona de la manera que lo hace, es que hace un nuevo ejemplo del intérprete de Python para cada trabajador, que es totalmente independiente de cualquier cosa que se ejecute antes o después. Esto asegura que no hay efectos secundarios no deseados, tales como las importaciones __future__ ser activo en el proceso de trabajo. El problema con esto es que hace las cosas mucho más complicado para hacerlo bien, y en mi experiencia con pp, no es particularmente robusta. pp ¿Tiene a tratar de hacer las cosas un poco más fácil para el usuario, pero parece introducir más problemas de los que resuelve en sus esfuerzos para hacer eso.

Si tuviera que escribir código que fue diseñado para su uso en un clúster desde el principio, probablemente terminar con pp, pero he encontrado que la adaptación de código existente para el trabajo con pp es una pesadilla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top