Estoy escribiendo un programa por un framework usando pygtk. El principal programa de hacer las siguientes cosas:Python, thread y gobject
- Crear un hilo de vigilancia para monitorear algún recurso
- Crear un cliente para recibir los datos de toma
- llamada
gobject.Mainloop()
pero parece que después de mi programa ingrese a Mainloop, el hilo de vigilancia tampoco se ejecutará.
Mi solución consiste en utilizar gobject.timeout_add
para ejecutar el monitor.
¿Pero por qué no funciona la creación de otro hilo?
Aquí está mi código:
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()
La salida del programa único "Watchdog correr ... Introduzca mainloop ..", entonces nada. Parece que el hilo nunca se ejecuta después de ingresar al lazo principal.
¿Qué más esperas? Con el código anterior, espero que esas dos cosas se impriman una vez cada una. – u0b34a0f6ae