gpt4 book ai didi

python-3.x - async def 和协程,链接是什么

转载 作者:行者123 更新时间:2023-12-03 02:07:48 25 4
gpt4 key购买 nike

我正在尝试了解 Python3 中出现的新异步功能。

我从 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() ...它是委托(delegate)但阻塞函数的占位符吗?它在哪里屈服?)

但是,最重要的是,我如何转换这个示例以使用新的花哨 async defawait关键词?会有什么收获?

最佳答案

这篇文章是我认为最有帮助的文章。

http://www.snarky.ca/how-the-heck-does-async-await-work-in-python-3-5

关于python-3.x - async def 和协程,链接是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com