asyncio 异步协程
方式一:
import asyncio
import time
def taskCallback(ret):
print('Callback: task result {}'.format(ret.result()))
async def foo(i): # 使用async关键字定义异步函数
print('task {} start'.format(i))
await asyncio.sleep(i) # 休眠一段时间
print('task {}: {}s end'.format(i, i))
return i * i
async def main1():
# 构建任务列表
tasks = [
asyncio.create_task(foo(1)),
asyncio.create_task(foo(2)),
asyncio.create_task(foo(3))
]
tasks[0].add_done_callback(taskCallback)
# 方式一写法:
await asyncio.wait(tasks) # 阻塞
for task in tasks:
print(task.done(), task.result())
start = time.time()
asyncio.run(main1())
print('耗时: {}s'.format(time.time() - start))
方式二:
import asyncio
import time
def taskCallback(ret):
print('Callback: task result {}'.format(ret.result()))
async def foo(i): # 使用async关键字定义异步函数
print('task {} start'.format(i))
await asyncio.sleep(i) # 休眠一段时间
print('task {}: {}s end'.format(i, i))
return i * i
async def main1():
# 构建任务列表
tasks = [
asyncio.create_task(foo(1)),
asyncio.create_task(foo(2)),
asyncio.create_task(foo(3))
]
tasks[0].add_done_callback(taskCallback)
# 方式二写法:
rets = await asyncio.gather(*tasks)
print(rets)
start = time.time()
asyncio.run(main1())
print('耗时: {}s'.format(time.time() - start))
Last updated