如何在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 类的方法?