base python 3.7+
协程
import asyncio
from datetime import datetime
now = lambda : datetime.now()
async def main():
time1 = now()
await asyncio.sleep(1)
time2 = now()
print(f'delay{time2-time1}')
asyncio.run(main())
并发运行
import asyncio
from datetime import datetime
now = lambda : datetime.now()
async def task_job(n ):
await asyncio.sleep(n)# 模拟io阻塞请求
async def main():
time1 = now()
# 此处创建了100个需要并发的任务,如果不用协程将耗时100秒
task_list = [asyncio.create_task(task_job(x)) for x in [1]*100]
await asyncio.gather(*task_list)
time2 = now()
print(f'delay{time2-time1}')
asyncio.run(main())
wait_for
import asyncio
from datetime import datetime
now = lambda : datetime.now()
async def task_job():
await asyncio.sleep(2)# 模拟io阻塞请求
async def main():
time1 = now()
task_obj = asyncio.create_task(task_job())
try:
await asyncio.wait_for(task_obj, timeout=2)
# await asyncio.wait_for(task_job(), timeout=2) # 此处放task对象或者协程都可以。
except asyncio.TimeoutError:
print('timeout')
time2 = now()
print(f'delay{time2-time1}')
asyncio.run(main())