Ich habe einen Python-Dienst mit langer Laufzeit, und ich würde gerne wissen, wie viel kumulative Wanduhrzeit von irgendwelchen ausführbaren Threads (d. H. Threads, die aus einem anderen Grund nicht blockiert waren) auf die GIL gewartet hat. Gibt es einen einfachen Weg, dies zu tun? Z. B. könnte ich vielleicht einige Zähler in der Protokolldatei ablegen.Gibt es eine einfache Möglichkeit zu sagen, wie viel Zeit damit verbracht wird, auf die Python GIL zu warten?
Meine zugrunde liegende Motivation ist es, die GIL als eine Quelle der Mystery Response Latenz von diesen lang andauernden Prozessen auszuschließen. Es gibt keinen besonderen Grund, die GIL zu vermuten (abgesehen davon, dass es zu den Symptomen passen würde), aber andere Formen der Protokollierung haben noch nichts ergeben, also, wenn es einfach ist, wäre es nett, diese Information zu haben .
Das Projekt gil_load sagt Ihnen, wie oft die GIL gehalten wird (dh * mindestens ein * Thread ist ausführbar). Die Frage fragt, wie oft auf die GIL gewartet wird (dh * mindestens zwei * Threads sind ausführbar). Wie erreichst du das mit gil_load? –