Код: Выделить всё
import asyncio
import threading
queue = asyncio.Queue()
def threaded():
import time
while True:
time.sleep(2)
queue.put_nowait(time.time())
print(queue.qsize())
@asyncio.coroutine
def async():
while True:
time = yield from queue.get()
print(time)
loop = asyncio.get_event_loop()
asyncio.Task(async())
threading.Thread(target=threaded).start()
loop.run_forever()
Проблема этого кода заключается в том, что цикл внутри async сопрограммы никогда не завершает первую итерацию, в то время как размер очереди увеличивается.
Проблема этого кода заключается в том, что цикл внутри async сопрограммы никогда не завершает первую итерацию. p>
Почему это происходит таким образом и что я могу сделать, чтобы это исправить?
Я не могу избавиться от отдельного потока, потому что в своем реальном коде я использую отдельный поток для связи с последовательным устройством, и Я не нашел способа сделать это с помощью asyncio.
Подробнее здесь: https://stackoverflow.com/questions/328 ... le-threads
Мобильная версия