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.
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:
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%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.
Tags und Links python multithreading linux ctypes