Ho una funzione di classe (chiamiamola "alpha.py") che usa multiprocessing (processes = 2) per eseguire il fork di un processo e fa parte di un pacchetto Python che ho scritto. In uno script Python separato (chiamiamolo "beta.py"), ho istanziato un oggetto da questa classe e ho chiamato la funzione corrispondente che usa il multiprocessing. Infine, tutto questo è racchiuso all'interno di uno script Python wrapper (chiamiamolo "gamma.py") che gestisce molti oggetti e funzioni di classe diversi.Python Multiprocessing RuntimeError su Windows
Essenzialmente:
- Run ./gamma.py dalla linea di comando
- gamma.py utilizza sottoprocesso ed esegue beta.py
- beta.py un'istanza di un oggetto dalla classe alpha.py e chiama la funzione che utilizza multiprocessing (processes = 2)
Questo non ha problemi di esecuzione su un Mac o Linux. Tuttavia, diventa un problema su una macchina Windows e l'errore (e documentazione) suggerisce che avrei dovuto scrivere questo da qualche parte:
if __name__ == '__main__':
freeze_support()
This other post menziona anche fare la stessa cosa.
Tuttavia, non so esattamente dove queste due righe dovrebbero risiedere. Al momento, né alpha.py, beta.py o gamma.py contiene una sezione if __name__ == '__main__':
. Sarebbe bello se qualcuno potesse dirmi dove dovrebbero andare queste due linee e anche la logica dietro di esse.
Puoi fornire un messaggio di errore con questo? traccia dello stack? Hai risolto questo. Sono sorpreso che non ci fosse una risposta. –