У меня есть GObject
-обработанный объект, который излучает сигналы в каком-то потоке, и я хочу обработать их в основном потоке, который запускает GLib
s MainLoop
.Вот пример кода, который использует PyGObject
:
import gi
from gi.repository import GObject, GLib
class SomeObj(GObject.Object, threading.Thread):
def __init__(self, device_path, terminate_event):
GObject.Object.__init__(self)
threading.Thread.__init__(self)
def run():
...
self.emit('sig')
...
@GObject.Signal
def sig(self):
pass
def callback(instance):
...
# will be called in obj's thread
loop = GLib.MainLoop()
obj = SomeObj()
self.watcher.connect('sig', callback)
obj.start()
loop.run()
callback()
будет вызван в потоке obj
.Как обрабатывать сигнал в основном потоке внутри loop.run()
?