Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2011 21:45:11

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

многопоток futures и PyQt4

подробно описал здесь - http://python.su/forum/viewtopic.php?pid=63615
но видимо из-за сложности вопроса ответа нет, а сам решение пока найти не смог

использую питон3, модуль futures для многопоточности - http://pypi.python.org/pypi/futures/2.1.2
каждому объекту future задается callback ‘process_result’

        for proxy in proxies:
future = self.executor.submit(self.worker, proxy)
future.add_done_callback(self.process_result)
self.pending.add(future)
в этом callback сейчас и обновляется UI по мере работы потоков
но это приводит к ужасным глюкам: чем больше элементов UI затрагивается в callback, тем больше он глючит и сыпет ошибки:
X Error: RenderBadGlyphSet (invalid GlyphSet parameter) 161
Extension: 148 (RENDER)
Minor opcode: 25 (RenderCompositeGlyphs32)
Resource id: 0x26
как правильно обновлять UI? через систему сигналов и слотов?



Офлайн

#2 Янв. 15, 2011 21:51:25

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

многопоток futures и PyQt4

с другой стороны здесь - http://python.su/forum/viewtopic.php?id=9111
напротив рекомендовали использовать process_result для обновления UI:

 def process_result(self, future):
# callback is called in main thread
# it's good practice to communicate with UI in main thread only



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version