我正在编写一个框架使用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