专栏名称: 蚂蚁学Python
分享Python领域的编程技术,包含网络爬虫、数据分析、大数据、人工智能、办公自动化等领域技术
目录
相关文章推荐
腾讯安全威胁情报中心  ·  腾讯安全攻击面管理多项能力获权威报告五星评价 ·  3 天前  
腾讯安全威胁情报中心  ·  腾讯安全攻击面管理多项能力获权威报告五星评价 ·  3 天前  
科技阿水  ·  给力!4K超清免费看,三端通用! ·  5 天前  
科技阿水  ·  给力!4K超清免费看,三端通用! ·  5 天前  
深蓝财经  ·  历史性一天!苹果华为贴身肉搏 ·  6 天前  
深蓝财经  ·  历史性一天!苹果华为贴身肉搏 ·  6 天前  
51好读  ›  专栏  ›  蚂蚁学Python

FastAPI为什么这么快?

蚂蚁学Python  · 公众号  · 科技创业 科技自媒体  · 2024-09-07 21:11

正文

简单来总结:

  • FastAPI 构建在 Starlette 之上,Starlette 是一个高性能的异步 ASGI 框架。
  • 通过异步处理,FastAPI 可以在 I/O 操作(如数据库查询、外部 API 请求等)等待期间释放线程,使其处理其他请求,从而大幅提高并发能力和响应速度。

1 程序的并发粒度

  • 机器之间并行:例如大数据技术,Hadoop/Hive/Spark
  • 进程并行:例如启动多个Python进程提供服务
  • 线程并发:单个进程中,启动很多个线程提供服务;
  • 协程并发:单个线程使用协程机制,提供并发能力;

2 FastAPI的高性能来自于协程的能力

概念细化推导过程:

  • 程序的并发粒度有:机器间、进程间、线程间、协程间
  • 从机器>进程>线程>协程的顺序,程序运行花费的资源调度耗费、程序上下文切换的耗费,从大到小递减;
  • 协程是在一个线程内实现的并发,协程的并发任务之间调度和上下文的耗费最少,对于高并发场景,可以认为协程最高效率最快速;
  • 协程的核心理解要点,在于函数可以用async和await配合,在IO期间交出线程执行权,让线程可以去处理其他用户请求
  • 协程减少了多机器/进程/线程的调度开销+切换不同上下文的开销,更加轻量级高性能
  • FastAPI的高性能,就来自于对协程的原生使用

3 协程和异步两个词语的区别

Python 可以通过使用 async 和 await 语法创建协程,并用于支持异步代码;

使用了异步编程是FastAPI具有高性能的一个重大原因。

  • 协程 是一种特殊的函数,我们的函数用async def开头就是协程,可以在执行过程中暂停和恢复;
  • 异步 是一种编程模式,通过非阻塞的方式处理多个任务,依赖于协程来实现。
  • 简单来说,协程是实现异步编程的基础,而异步编程是通过协程等机制实现的高效任务调度和执行方式。

4 协程的本质原理

  • 协程:在单线程内实现并发(问题是单线程内怎么实现并发?)
  • 核心原理:用一个超级循环(其实就是while true)循环,就是线程自己的任务调度器
  • 核心原理:配合IO多路复用原理(IO时CPU可以干其他事情)

《the one loop》

  • 至尊循环驭众生
  • 至尊循环寻众生
  • 至尊循环引众生
  • 普照众生欣欣荣
  • 通过该图可以看到,执行路径只有一条,但是遇见IO可以去执行其他的任务,最终实现了并发。


FastAPI全套视频课程更新中,当前半价优惠:


推荐文章
腾讯安全威胁情报中心  ·  腾讯安全攻击面管理多项能力获权威报告五星评价
3 天前
腾讯安全威胁情报中心  ·  腾讯安全攻击面管理多项能力获权威报告五星评价
3 天前
科技阿水  ·  给力!4K超清免费看,三端通用!
5 天前
科技阿水  ·  给力!4K超清免费看,三端通用!
5 天前
深蓝财经  ·  历史性一天!苹果华为贴身肉搏
6 天前
深蓝财经  ·  历史性一天!苹果华为贴身肉搏
6 天前