q = Queue(maxsize=1)

def my_callback(x):
    q.put(x)
q.put('dummy', True, timeout)
q.join()
while True:
    next_item = q.get(True, timeout)
q.task_done()
if next_item is job_done:
    break
yield next_item
q.get()
q.task_done()
Превратить функции с обратным вызовом в генераторы Python?