我正在編寫一個框架使用pygtk的程序。主程序做以下的事情:Python,線程和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()
程序輸出唯一的 「看門狗運行...進入主循環..」,然後什麼。 似乎線程進入主循環後永遠不會運行。
你還期望什麼?有了上面的代碼,我期望這兩件事每次都打印一次。 – u0b34a0f6ae 2009-11-25 15:49:19