Я пишу программу каркасом с использованием pygtk. Основная программа делает следующие вещи:Python, thread and gobject
- Создать сторожевую нить контролировать некоторый ресурс
- Создание клиента для получения данных из сокета
- вызова
gobject.Mainloop()
но мне кажется, после моей программы войдите в Mainloop, контрольная цепочка также не будет работать.
Моим обходным путем является использование gobject.timeout_add
для запуска монитора.
Но почему создание другого потока не работает?
Вот мой код:
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()
Выход программы только "сторожевого работает ... Введите MainLoop ..", то ничего. Кажется, что нить не запускается после входа в mainloop.
Что еще вы ожидаете? С приведенным выше кодом я ожидаю, что эти две вещи будут напечатаны один раз. – u0b34a0f6ae