Выдать g_signal из потока в main в Python

Таким образом, я нашел эту суть о том, как создать систему "пула потоков", и моя проблема заключается в том, что когда выполненная функция завершает работу в потоке, сигнал "выполнено" должен исходить из (или в) основного потока. Решение, представленное в сущности, состояло в том, чтобы переписать GObject.emit использовать функцию GObject.idle_add(GObject.GObject.emit, self, *args) что делает трюк в примере суть, но загадочно не работает для меня. Я создал слегка модифицированную версию его кода, которая делает то, что мне нужно, кроме как правильно / вообще не излучать сигналы.

class _IdleObject(GObject.GObject):
    """ Override GObject.GObject to always emit signals in the main thread by
    emmitting on an idle handler """
    @trace
    def __init__(self):
        GObject.GObject.__init__(self)

    @trace
    def emit(self, *args):
        GLib.idle_add(GObject.GObject.emit, self, *args)

Таким образом, сигналы либо не испускаются, либо испускаются во вторичных потоках (когда закомментирована перезапись функции emit), которые не могут обновить пользовательский интерфейс, поэтому не решают мою проблему. Есть идеи о том, что происходит?

Моя версия его сути может быть найдена здесь

0 ответов

Другие вопросы по тегам