Python: llamada multiprocessing.pool dentro de un demonio

Tengo un script en Python que genera un proceso de daemon. Dentro del proceso, estoy usando multiprocessing.pool para ejecutar de 1 a 4 procesos simultáneamente.

Cuando ejecuto esto fuera del proceso del daemon, funciona perfectamente (es decir, cuando configuro run_from_debugger=True – vea el código a continuación), pero si ejecuto el código a través de un proceso del daemon (es decir, run_from_debugger=False ), async_function nunca se ejecuta .

¿Es posible usar multiprocessing.pool dentro de un proceso de daemon ? Estoy usando Python-daemon 1.6 como mi paquete de daemon (si es importante).

Código:

 def loop_callback(params): #Spawn the process in the pool # Because loop_callback is called many times, often faster than async_function executes, # adding them to a pool allows for parallel execution. pool.apply_async(async_function, params) def run_service(): # loop is a method that can/will call loop_callback multiple times, and it will call # loop_callback faster than the code in asyc_function executes loop(alignment_watch_folder, sleep_duration) #Class declaration app = App() #Declare a pool of processes # processes=1 indicates serial execution pool = Pool(processes=4) #Either run from a daemon process or not run_from_debugger = False #Run the daemon process if run_from_debugger: run_service() else: daemon_runner = runner.DaemonRunner(app) daemon_runner.do_action() 

Cualquier consejo sería muy apreciado.

Cotización a partir de la documentación de multiprocessing :

demonio

El indicador de daemon del proceso, un valor booleano. Esto debe establecerse antes de llamar a start ().

El valor inicial se hereda del proceso de creación.

Cuando un proceso sale, intenta terminar todos sus procesos secundarios demoníacos.

Tenga en cuenta que un proceso demoníaco no está permitido para crear procesos secundarios. De lo contrario, un proceso demoníaco dejaría a sus hijos huérfanos si finaliza cuando finaliza su proceso padre. Además, estos no son servicios o demonios de Unix , son procesos normales que se terminarán (y no se unirán) si han salido procesos no demoníacos.

Dado que el multiprocessing.Pool herramienta tiene que crear procesos de trabajo, no puede demonizar un proceso usándolo.