Tarea paralela concurrencia con dependencias en Python como GNU Make

Estoy buscando un método o posiblemente un enfoque filosófico sobre cómo hacer algo como GNU Make dentro de python. Actualmente, utilizamos makefiles para ejecutar el procesamiento porque los makefiles son extremadamente buenos en ejecuciones paralelas con el cambio de una sola opción: -j x. Además, gnu make ya tiene las stacks de dependencias integradas, por lo que agregar un procesador secundario o la capacidad de procesar más subprocesos solo significa actualizar esa única opción. Quiero ese mismo poder y flexibilidad en Python, pero no lo veo.

Como ejemplo:

all: dependency_a dependency_b dependency_c dependency_a: dependency_d stuff dependency_b: dependency_d stuff dependency_c: dependency_e stuff dependency_d: dependency_f stuff dependency_e: stuff dependency_f: stuff 

Si hacemos una operación estándar de un solo hilo (-j 1), el orden de operación podría ser:

 dependency_f -> dependency_d -> dependency_a -> dependency_b -> dependency_e \ -> dependency_c 

Para dos hilos (-j 2), podríamos ver:

 1: dependency_f -> dependency_d -> dependency_a -> dependency_b 2: dependency_e -> dependency_c 

¿Alguien tiene alguna sugerencia sobre un paquete ya creado o un enfoque? Estoy totalmente abierto, siempre que sea una solución / enfoque pythonico.

Por favor y gracias de antemano!

Es posible que desee echar un vistazo a una jarra . Es un marco de paralelización basado en tareas que incluye el seguimiento de dependencias.

Eche un vistazo a Waf , es menos complicado que Scons.

Waf es un marco basado en Python para configurar, comstackr e instalar aplicaciones. Aquí están quizás las características más importantes de Waf:

Orden de comstackción automática: el orden de comstackción se calcula a partir de los archivos de entrada y salida, entre otros. Dependencias automáticas: las tareas a ejecutar se detectan mediante el hashing de comandos y comandos. Rendimiento: las tareas se ejecutan en paralelo de forma automática. : la documentación predeterminada incluye la compatibilidad con muchos lenguajes de progtwigción y comstackdores: la aplicación se basa en un modelo robusto documentado en The Waf book y en la documentación API. Python support: de Python 2.4 a 3.2 (Jython 2.5 y PyPy también son compatibles)

(desde el sitio web)

Debe usar Scons , ya que ya hace los cálculos que desea, y puede subvertirlo para hacer casi cualquier cosa (como Make).

Echa un vistazo a Scons . Es un reemplazo para GNU Make escrito en Python.

SCons es una herramienta de construcción de software, es decir, una alternativa superior a la herramienta de construcción clásica “Make” que todos conocemos y amamos.

SCons se implementa como un script de Python y un conjunto de módulos, y los “archivos de configuración” de SCons en realidad se ejecutan como scripts de Python. Esto le da a SCons muchas capacidades poderosas que no se encuentran en otras herramientas de comstackción de software.

rehacer -j

“Más pequeño, más fácil, más poderoso y más confiable que la marca. Una implementación de djb’s redo ” en Python.