async ====》异步 ; io ====》inpurt output
asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。
asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop(事件循环)的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。
import requests
import asyncio #想要实现协程必须要引用到Python内置的包
import time
async def f1(): #定义函数f1到f4
print("孙大圣")
await asyncio.sleep(2)
print("孙大圣")
async def f2():
print("老猪")
await asyncio.sleep(3)
print("老猪")
async def f3():
print("唐僧")
await asyncio.sleep(6)
print("唐僧")
async def f4():
print("沙僧")
await asyncio.sleep(1)
print("沙僧")
# if __name__ == '__main__': #第一种方法,但推荐使用第二种方法
# f1 = f1()
# f2 = f2()
# f3 = f3()
# f4 = f4()
# list = [
# f1, f2, f3, f4
# ]
# t1 = time.time()
# asyncio.run(asyncio.wait(list))
# t2 = time.time()
# print(t2 -t1 )
async def main(): #第二中方法,要注意的是在3.8版本后需要手动将协程对象对象包装
list = [ #成一个task对象
asyncio.create_task(f1()),
asyncio.create_task(f2()),
asyncio.create_task(f3()),
asyncio.create_task(f4())
]
await asyncio.wait(list) #代码运行过程
# 当代被执行时找到执行入口,执行入口内使用asyncio.run调用了
if __name__ == '__main__': # main函数, 随后在main函数内将四个函数装到列表内,随后设置
t1 = time.time() # await等待执行asyncio.wait将列表内的方法根据线程占用情况而
asyncio.run(main()) # 运行
t2 = time.time()
print(t2 - t1 ) # 两个time使来看