У меня есть один поток, который записывает результаты в очередь.
В другом потоке (GUI) я периодически (в событии IDLE) проверяю, есть ли результаты в очереди, например:
def queue_get_all(q):
items = []
while 1:
try:
items.append(q.get_nowait())
except Empty, e:
break
return items
Это хороший способ сделать это?
Edit:
Я спрашиваю, потому что иногда ожидающая нить застревает в течение нескольких секунд, не вынимая новых Результаты.
"Застрявшая" проблема оказалась в том, что я выполнял обработку в обработчике событий бездействия, не убедившись, что такие события действительно генерируются, вызывая wx.WakeUpIdle
, как рекомендуется.