
「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 4 篇。 结论:WSGI 是同步接口规范,ASGI 是它的异步版本。FastAPI 基于 ASGI,生产环境用 Uvicorn 运行;同步函数会被放进线程池,异步函数直接在事件循环里跑。 一、WSGI:一次请求占一个线程 WSGI 应用是一个同步可调用对象: def application(environ, start_response…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 3 篇。 结论:create_task 负责启动并发,gather 负责等待结果,wait_for 负责超时,cancel 负责取消。四个工具解决协程的四种控制需求。 一、create_task:把协程变成任务 import asyncio async def my_func(name, delay): await asyncio.sl…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 2 篇。 结论:async def 定义协程函数,调用它只返回协程对象;await 让出控制权,事件循环负责在 I/O 完成后恢复执行。 一、async def 不是“立即执行” import asyncio async def hello(): print("Hello") await asyncio.sleep(1) print("…

「FastAPI & SQLAlchemy 实战」系列共 10 篇,从协程基础讲到数据库接口。这是第 1 篇。 结论:I/O 密集型任务优先用协程,CPU 密集型任务用多进程,线程只适合少量阻塞调用或必须使用同步库的场景。 一、三者怎么选 进程线程协程 调度者操作系统操作系统程序自己(事件循环) 内存独立地址空间共享进程内存共享线程内存 切换成本高中极低 并发量几十个几百到几千几万 适合CPU 密集少量阻塞 I/O高并发 I/O 二、线…

1. 什么是协程
概念:协程(Coroutine),是一种线程内部的任务调度机制,它通过事件循环,在用户态中实现任务的挂起与恢复执行,从而在遇到 IO 操作时,不让 CPU 等待,而是继续执行其它需要 CPU 的任务。
协程的本质就是:在一

12. 使用 Thread 创建线程
首先我们要明确一个概念:任何一个正在运行的 Python 程序,至少都有一个线程!
1️⃣回顾一下我们之前的代码:
if __name__ == '__main__':
print('主进程中的

6. 进程之间不共享变量
进程之间不共享内存,因此也就不共享任何变量。验证代码如下:
验证代码 1:
# 进程之间不共享内存,因此也就不共享任何变量。
from multiprocessing import Process
num = 10

3. 使用 Process 创建进程
使用multiprocessing.Process类创建进程对象。
import os
import time
from multiprocessing import Process
print(100

1. 一些核心概念
1️⃣并发 vs 并行
并发:
🔸概念:在一段时间内,当 CPU 面对多个任务时,会将每个任务交替着执行一段时间。
🔸特点:
(1). 对于某个瞬间,CPU实际上只在执行一个任务。
(2). CPU通过高频切换不同的任

5. 关于with 概述:Python 中的with主要用于管理程序中“需要成对出现的操作”,例如: 🔸上锁 / 解锁 🔸打开 / 关闭 🔸借用 / 归还 使用with的目标:编码者只管做具体的事,“进入”和“离开”的事,让 Python 自动处理。语法格式: with 能得到一个上下文管理器的表达式 as 变量: 具体的事1 具体的事2 具体的事3 上下文管理器协议: __enter__ 方法:with中的代码执行【之前】调用,其返回…
最新评论
干货满满!
江苏省 南京市 · IP 49.91.145.*
我要看文章
重庆市 · IP 116.168.9.*
这个内容实在是太精彩啦
重庆市 · IP 123.147.232.*