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

Posted

技术标签:

【中文标题】如何在python中正确关闭gobject主循环?【英文标题】:How to shut down gobject main loop properly in python? 【发布时间】:2013-09-30 06:11:52 【问题描述】:

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

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

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

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

感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

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

    简单的方法:在分叉之前用gobject.MainLoop() 初始化loop,这样它就可以在两个线程中使用; 困难的方法:在循环线程中初始化后将值传递给主线程。

GCond documentation(push_data()pop_data())显示了线程之间传递数据的示例(C 语言)。

【讨论】:

以上是关于如何在python中正确关闭gobject主循环?的主要内容,如果未能解决你的问题,请参考以下文章

python gobject.mainloop 吞噬信号事件

如何从 python 调用用 C 编写的 GObject 类的方法?

如何在 python 中正确关闭 Selenium WebDriver 实例?

GLib 和 GObject 到底是啥?

扭曲:正确捕获键盘中断和关闭

如何使用 Python+PyGObject 的 GObject.bind_property 函数进行 2 路数据绑定?