前几天用python和Gtk写了个测试监控程序,主线程是GTK的图形界面,另外还起了一个后台线程定时运行测试脚本,检查测试结果。
写完一跑,发现后台线程没有运行。要是在主线程进入图形界面之前sleep一会,后台线程就能运行,但是主线程一醒,后台线程又停了。
先google一下,发现2003年有个哥们在python的mail list里问了同样的问题,可惜没人回答。再接着google就没有相关的内容了。这种迹象表明,该问题可能是个很傻的问题。从各方面看,这个问题都和GTK相关,于是就查pygtk的文档,果然找到这么个函数:
gtk.gdk.threads_init
这个函数可以让多个线程使用python解释器。这个函数要在gtk.main之前调用,如果不调用这个函数就调用gtk.main,那gtk.main所在的线程就会独占python解释器,使其他线程无法执行。
OK,加入这个函数,运行,两个线程跑得钢钢的。文档不余欺也。
没有评论:
发表评论