Sto scrivendo un programma da un framework usando pygtk. Il programma principale di fare le seguenti cose:Python, thread e gobject
- creare un thread di watchdog per monitorare una risorsa
- Creare un client per ricevere i dati da presa
- chiamata
gobject.Mainloop()
ma sembra dopo il mio programma inserisci il Mainloop, anche il thread del watchdog non funzionerà.
La soluzione alternativa è utilizzare gobject.timeout_add
per eseguire la cosa del monitor.
Ma perché la creazione di un altro thread non funziona?
Ecco il mio codice:
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()
L'output del programma unico "Watchdog running ... Inserisci mainloop ..", poi più nulla. Sembra che il thread non funzioni mai dopo aver inserito mainloop.
Cos'altro ti aspetti? Con il codice sopra, mi aspetto che queste due cose vengano stampate una volta ciascuna. – u0b34a0f6ae