asyncio 异步io相关知识
import asyncio #运行器 async def hello_async(delay, words): await asyncio.sleep(delay) print(words) #协程与任务 async def test_async(): #等待第一个协程hello_async执行完以后再串行执行下一个任务,两个协程没有并发效果 start_time = time.time() print('fun test_async run start_time', start_time) await hello_async(1, 'hello asyncio') await hello_async(2, 'hello asyncio') end_time = time.time() print('fun test_async run end_time %s, running time %s' % (end_time, end_time-start_time)) async def test_async1(): #asyncio.create_task实现两个异步任务并发 start_time = time.time() print('fun test_async1 run start_time', start_time) task1 = asyncio.create_task(hello_async(1, 'hello asyncio')) task2 = asyncio.create_task(hello_async(2, 'hello asyncio')) await task1 await task2 end_time = time.time() print('fun test_async1 run end_time %s, running time %s' % (end_time, end_time-start_time)) async def test_async_tg(): #asyncio.TaskGroup()比直接使用create_task()方法更加方便,创建task一步任务后不用再await调用 start_time = time.time() print('fun test_async_tg run start_time', start_time) async with asyncio.TaskGroup() as tg: task1 = tg.create_task(hello_async(1, 'hello asyncio')) task2 = tg.create_task(hello_async(2, 'hello asyncio')) end_time = time.time() print('fun test_async_tg run end_time %s, running time %s' % (end_time, end_time-start_time)) if __name__ == '__main__': asyncio.run(hello_async(1, 'hello asyncio')) # asyncip运行器上下文管理执行hello_async() with asyncio.Runner() as runner: runner.run(hello_async(1, 'hello asyncio')) runner.run(test_async()) runner.run(test_async1()) runner.run(test_async_tg())