最近发现asyncio这个模块对我来说十分新鲜,开启协程来实现单线程异步并发;
首先定义两个async异步协程,使用await来开启对I/O操作的等待,此处使用asyncio.sleep模拟:
async def async_1():
for i in range(3):
print("hello A",i)
await asyncio.sleep(1)
print("world A",i)
async def async_2():
for i in range(3):
print("hello B",i)
await asyncio.sleep(1)
print("world B",i)
然后定义一个用来启动异步协程的函数,搜罗到两种方法,一种是使用asyncio.gather启动:
async def main():
await asyncio.gather(
async_1(),
async_2(),
)
另一种是使用asyncio.create_task方法创建任务,使用await来触发:
async def main():
task1 = asyncio.create_task(async_1())
task2 = asyncio.create_task(async_2())
await task1 # 此时并发运行task1和task2
await task2
然后使用asyncio.run方法开启事件循环;
asyncio.run(main())
最后附上asyncio文档:https://docs.python.org/zh-cn/3/library/asyncio.html