Ich schreibe ein Programm von einem Framework mit pygtk. Das Hauptprogramm die folgenden Dinge zu tun:Python, Thread und Gobject
- einen Watchdog-Thread erstellen eine Ressource
- Erstellen Sie eine Client zu überwachen, um Daten aus dem Socket
- Anruf
gobject.Mainloop()
aber es scheint, nach meinem Programm Geben Sie den Mainloop ein, der Watchdog-Thread wird ebenfalls nicht ausgeführt.
Meine Problemumgehung ist, gobject.timeout_add
zu verwenden, um die Monitor-Sache auszuführen.
Warum funktioniert das Erstellen eines anderen Threads nicht?
Hier ist mein Code:
import gobject
import time
from threading import Thread
class MonitorThread(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
print "Watchdog running..."
time.sleep(10)
def main():
mainloop = gobject.MainLoop(is_running=True)
def quit():
mainloop.quit()
def sigterm_cb():
gobject.idle_add(quit)
t = MonitorThread()
t.start()
print "Enter mainloop..."
while mainloop.is_running():
try:
mainloop.run()
except KeyboardInterrupt:
quit()
if __name__ == '__main__':
main()
Das Programm Ausgabe nur "Watchdog läuft ... Bitte geben Sie mainloop ..", dann nichts mehr. Scheint, dass der Thread nach dem Eintragen der Hauptschleife nie ausgeführt wird.
Was erwarten Sie mehr? Mit dem obigen Code erwarte ich, dass diese beiden Dinge jeweils einmal gedruckt werden. – u0b34a0f6ae