python协程asyncio:async与await
Posted zhangphil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python协程asyncio:async与await相关的知识,希望对你有一定的参考价值。
python协程asyncio:async与await
import asyncio
import random
import sys
import time
fmt = 1000000000
async def my_task(id: int):
t = random.randint(2, 10)
# 模拟一段耗时的操作...
print(f'task-id', 'start', time.time_ns() / fmt)
print(f'task-id 需耗时', t)
await asyncio.sleep(t)
print(f'task-id', 'end ', time.time_ns() / fmt)
return id, t
if __name__ == '__main__':
print(sys._getframe().f_code.co_name, sys._getframe().f_lineno, time.time_ns() / fmt)
# python 3.10+
loop = asyncio.new_event_loop()
# 批量运行异步任务
tasks = []
for i in range(3):
task = loop.create_task(my_task(i), name=str(i))
tasks.append(task)
print(sys._getframe().f_code.co_name, sys._getframe().f_lineno, time.time_ns() / fmt)
loop.run_until_complete(asyncio.wait(tasks))
print(sys._getframe().f_code.co_name, sys._getframe().f_lineno, time.time_ns() / fmt)
loop.close()
输出:
<module> 22 1662981169.611884
<module> 32 1662981169.6128838
task-0 start 1662981169.6128838
task-0 需耗时 9
task-1 start 1662981169.6128838
task-1 需耗时 2
task-2 start 1662981169.6128838
task-2 需耗时 7
task-1 end 1662981171.6129637
task-2 end 1662981176.623158
task-0 end 1662981178.6087167
<module> 34 1662981178.6087167
以上是关于python协程asyncio:async与await的主要内容,如果未能解决你的问题,请参考以下文章
python asyncio 异步 I/O - 协程(Coroutine)与运行
#yyds干货盘点# 听说过python协程没?听说过 asyncio 库没?都在这一篇博客了