3

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

如何在 Python 中侦听 Linux 中的“插入 USB 设备”事件?

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

或更笼统地说:使此循环独立运行但在主函数退出时也退出的正确方法是什么?

我感谢您的帮助。

4

1 回答 1

2

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

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

  1. 最简单的方法:在分叉之前初始化loopgobject.MainLoop()因此它可以从两个线程中使用;
  2. 困难的方法:在循环线程中初始化后将值传递给主线程。

GCond 文档push_data()和)显示了在线程之间传递数据的示例(用 C 语言pop_data())。

于 2014-02-01T10:33:22.810 回答