异步
一般代码是从上而下执行的,比如有3个打印语句,正常执行是从第一个到最后一个按照顺序打印出来,也就是后面的打印语句会等待前面的打印语句执行完后在执行,这个是同步执行,同步意味着有序执行;
而异步就是,后面的打印语句不会等待前面的执行完后再执行,也就是说异步不会阻塞其他任务执行,异步意味着无序执行
异步与多线程多进程:
异步是轻量级的线程,可以叫做协程
多进程和多线程无法获取函数的返回值,但是异步可以获取函数的返回值,进程池和线程池可以说是有异步的效果,它们可以获取函数的返回值
主进程是异步才可以使用
异步更适合需要返回值的操作,比如文件读写使用
多线程和多进程更适合不需要返回值的操作
async与await关键字
Python3.4后才有的
async 定义异步
await 执行异步
用法:
# 定义异步函数 async def test(a): return a # 执行异步 async def t2(): res = await test(1)
asyncio模块:
调用异步模块执行
内置了对异步IO的支持,用于处理异步IO
提供了使用协程构建并发应用的工具
asyncio提供的框架以事件循环(event loop)为中心,程序开启一个无限的循环,程序会把一些函数注册到事件循环上。当满足事件发生的时候,调用相应的协程函数
asyncio调用async函数
用法:
async def main(): result = await asyncio.gather(a(),b()) print(result) if __name__ == '__main__': asyncio.run(main())