ID eines Python-Threads, wie von top gemeldet

8

Ich starte eine Menge verschiedener Threads in meinem Python-Skript. Ich möchte den Speicher und die CPU-Auslastung jedes dieser Threads verfolgen. Ich verwende top und ps -eLf dafür.

Aber es stellt sich heraus, dass der von thread.start_new_thread() zurückgegebene Bezeichner sich von der Thread-PID unterscheidet, die von top und anderen ähnlichen Programmen angezeigt wird. Gibt es eine Möglichkeit, diese PID von mit im Python-Skript zu erhalten? Auf diese Weise kann ich feststellen, welche PID zu welchem ​​Thread gehört.

    
Phani 16.08.2012, 17:14
quelle

3 Antworten

12

Dank dieser Post habe ich die Python-Threads, um ihre jeweiligen Thread-IDs zu melden. Mach zuerst eine grep -r 'SYS_gettid' /usr/include/' . Ich habe eine Zeile: #define SYS_gettid __NR_gettid Beim weiteren Greifen von grep -r '__NR_gettid' /usr/include/ habe ich eine Reihe passender Zeilen:

%Vor%

Wählen Sie nun diejenige aus, die Ihrer Architektur entspricht. Meine war 186. Fügen Sie nun diesen Code in alle Ihre Python-Thread-Skripts ein, um die vom Betriebssystem erkannte Thread-ID zu erhalten:

%Vor%     
Phani 16.08.2012, 18:12
quelle
4

Hier ist ein Patch, um die Python-Thread-ID durch TID zu ersetzen, wie in htop :

angezeigt %Vor%     
Vincent 08.09.2015 13:22
quelle
0

Welches Betriebssystem benutzen Sie?

Mit Ausnahme sehr alter Versionen von Linux sollte jeder Thread die gleiche PID (Prozess-ID) haben. Der Bezeichner in thread.start_new_thread () ist intern in Python und wird verwendet, um einen bestimmten Ausführungsthread zu identifizieren.

Weitere Informationen zu Linux-Threading finden Sie auf der pthreads-Manpage unter Linux.

    
Claris 16.08.2012 17:24
quelle