关于协程的task任务和gather问题,跪求大神降临!!
【求助帖】请及时确认最佳答案,下次提问时可以得到更多关注,问题可以更快解决,现在用协程异步执行有3个方法了。
1.直接用task封装协程,然后调用执行。
2.可以不用task封装,直接用gather并发执行。
3.可以用task封装后,再用gather并发执行。
我懵逼了, 这3种到底有啥不一样啊,一般建议使用哪种方式呢,为什么呢?
案例如下:
import asyncio
import time
async def ceshi01(x,y):
await asyncio.sleep(y)
print(f"我是{x},我运行了{y}分钟")
async def yunxing():
# await asyncio.gather(ceshi01('A',2),ceshi01('b',3),ceshi01('c',4)) #可以不用task封装,就能直接异步执行。
await asyncio.create_task(ceshi01('A',2)) #直接用task封装了, 也能异步执行。
await asyncio.create_task(ceshi01('b',4))
print(asyncio.run(yunxing()))
那下面的,先用task封装一下,然后再用gather执行,这到底有啥区别啊。 我的天啊。 求助啊!!
import asyncio
import time
async def ceshi01(x,y):
await asyncio.sleep(y)
print(f"我是{x},我运行了{y}分钟")
async def yunxing():
start = time.perf_counter()
task = asyncio.create_task(ceshi01('b',3))# 也可以像这样用task封装,
task1 = asyncio.create_task(ceshi01('c',4))
await asyncio.gather(task,task1) #再用gather 来执行的情况,
print(time.perf_counter() - start)
asyncio.run(yunxing())
页:
[1]