Ho una funzione che utilizza la multiprocessing (in particolare joblib) per accelerare una routine lenta usando più core. Funziona alla grande; nessuna domanda lì.Le funzioni possono sapere se sono già multiprocessi in Python (joblib)
Ho una suite di test che usa il multiprocessing (attualmente solo il sistema multiprocessing.Pool(), ma può cambiarlo in joblib) per eseguire indipendentemente le funzioni di test di ogni modulo. Funziona alla grande; nessuna domanda lì.
Il problema è che ora ho integrato la funzione di multiprocessing nella suite di test del modulo, in modo che il processo di pool esegua la funzione di multiprocessing. Mi piacerebbe farlo in modo che la funzione interiore sappia che è già multiprocesso e non gira più forchette di se stesso. Attualmente il processo interno a volte si blocca, ma anche se così non fosse, ovviamente non ci sono guadagni per il multiprocessing all'interno di una routine già parallela.
Posso pensare a diversi modi (con i file di blocco, impostare una sorta di variabile globale, ecc.) Per determinare lo stato in cui ci troviamo, ma mi chiedo se ci sia un modo standard per capirlo (in PY multiprocessing o in joblib). Se funziona solo in PY3, andrebbe bene, anche se ovviamente le soluzioni che funzionano anche su 2.7 o inferiori sarebbero migliori. Grazie!
Dopo un mese di pensarci, non appena ho postato la bontà, ho capito la risposta: ' multiprocessing.current_process(). daemon'. 50 rappresentanti a chiunque voglia scriverlo. :-) –