如何在python中正确关闭gobject主循环?

时间:2013-09-24 20:39:19

标签: python multithreading dbus gobject

我在试图听dbus的时候第一次发现自己遇到了一个gobject。我发现这段代码教我如何设置一个主循环。

How can I listen for 'usb device inserted' events in Linux, in Python?

但我现在需要的是一种阻止它的方法。主循环有一个退出函数,我知道如何从键盘中断异常调用它。但是当我将这个主循环放入线程时,如何让它停止?

或者更一般:使这个循环独立运行的正确方法是什么,但是当main函数退出时也退出?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

对python一无所知,但一般情况下你应该将loop变量传递给调用线程(你的主函数),然后在你完成时从那里传递loop.quit()

要传递循环变量,您基本上有两个选项:

  1. 简单方法:在分叉之前用loop初始化gobject.MainLoop(),因此可以从两个线程获得;
  2. 困难的方法:在循环线程中初始化后将值传递给主线程。
  3. GCond documentationpush_data()pop_data())显示了在线程之间传递数据的示例(在C中)。