Domanda

Supponiamo di avere uno script Python chiamato my_parallel_script.py che implica l'uso di multiprocessing per parallelizzare diverse cose e lo eseguo con il seguente comando:

python -m cProfile my_parallel_script.py

Questo genera un output di profilazione solo per il processo principale . Le chiamate effettuate nei processi secondari non vengono affatto registrate. È possibile profilare anche i processi figlio?

Se l'unica opzione è quella di modificare l'origine, quale sarebbe il modo più semplice per farlo?

È stato utile?

Soluzione

cProfile funziona solo all'interno di un singolo processo, quindi non verrà automaticamente profilato il processo figlio.

Vorrei raccomandare di modificare il codice del processo figlio in modo da poterlo richiamare separatamente come processo singolo. Quindi eseguilo sotto il profiler. Probabilmente non è necessario eseguire il sistema multi-processo durante la creazione del profilo e ciò semplifica l'esecuzione di un solo figlio in esecuzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top