Я пытаюсь обернуть голову вокруг новых функциональных функций asyncio, которые появились в Python3.async def и сопрограммы, какая ссылка
Я начал с простого примера рабочего найти на StackOverflow, модифицирована немного:
import asyncio, random
q = asyncio.Queue()
@asyncio.coroutine
def produce(name):
while True:
value = random.random()
yield from q.put(value)
print("Produced by {0}".format(name))
yield from asyncio.sleep(1.0 + random.random())
@asyncio.coroutine
def consume(name):
while True:
value = yield from q.get()
print("Consumed by {0} ({1})".format(name, q.qsize()))
yield from asyncio.sleep(1.2 + random.random())
loop = asyncio.get_event_loop()
loop.create_task(produce('X'))
loop.create_task(produce('Y'))
loop.create_task(consume('A'))
loop.create_task(consume('B'))
loop.run_forever()
основном я понимаю, как это работает (за исключением, возможно, для yield from asyncio.sleep()
... Является ли это заполнитель для делегированного, но функция блокировки? Где она уступает?)
Но, прежде всего, как я мог трансформировать этот пример, чтобы использовать новые ключевые слова 10 и await
? И какой будет выигрыш?