2014-12-25 24 views
6

Qual è la ragione di tale problema in joblib? 'I loop paralleli con backup multiprocessing non possono essere nidificati sotto i thread, impostazione n_jobs = 1' Cosa devo fare per evitare questo problema?I loop paralleli con il back-processing multiprocessing non possono essere nidificati sotto i thread

In realtà, ho bisogno di implementare un server XMLRPC che esegua calcoli pesanti nel thread in background e segnala l'avanzamento corrente tramite il polling dal client dell'interfaccia utente. Utilizza gli scikit-learn che sono basati su joblib.

P.S .: Ho semplicemente cambiato il nome del thread in "MainThread" per evitare tale avviso e tutto sembra funzionare correttamente (eseguire in parallelo come previsto senza problemi). Quale potrebbe essere un problema in futuro per tale soluzione?

+0

Per quanto ho capito, il problema è che una delle vostre discussioni genera un altro calcolo multithread. Io, personalmente, non ne vedo la necessità (sì, puoi usare un modello di forcella complesso, ma perché usi loop paralleli per questo?), Poiché, presumibilmente, stai già utilizzando tutto il parallelismo che hai. –

risposta

0

Questo sembra essere dovuto a questo issue nella libreria JobLib. Al momento della stesura questo sembra essere risolto ma non ancora rilasciato. Come scritto nella questione, una correzione sporca sarebbe di rinominare il thread principale torna a MainThread:

threading.current_thread().name = 'MainThread'