Załóżmy, że mam skrypt Pythona o nazwie my_parallel_script.py
który polega na wykorzystaniu multiprocessing
parallelize kilka rzeczy i uruchomić go za pomocą następującego polecenia:W jaki sposób można profilować zrównoleglony skrypt w języku Python?
python -m cProfile my_parallel_script.py
Generuje profilowania wyjścia dla procesu dominującej tylko. Połączenia wykonywane w procesach podrzędnych nie są w ogóle rejestrowane. Czy możliwe jest również profilowanie procesów potomnych?
Jeśli jedyną opcją jest modyfikacja źródła, jaki byłby najprostszy sposób to zrobić?
Próbowałem już tego i niestety ** muszę ** uruchomić systemowy proces wieloprocesowy podczas profilowania. Wydaje się, że po pewnym czasie zwalnia znacząco, ale tylko wtedy, gdy działa z włączonym procesem wieloprocesowym. – Fragsworth
Prawdopodobnie jest to rywalizacja o zasoby, a profilowanie może nie być sposobem na znalezienie go. W każdym razie możesz spróbować profilować wszystkie procesy podrzędne na raz. Możesz wywołać profil programowo w dziecięcym kodzie Pythona. –