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

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

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

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

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

感谢您的帮助。

【问题讨论】:

    标签: python multithreading dbus gobject


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 1970-01-01
      • 2016-05-03
      • 2016-04-23
      • 2016-02-17
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多