5 篇文章

  • pip&uv

    Pip & uv 使用 Pip 基础使用 pip install xxx 从 PyPI 下载合适的版本(一般是最新,如果没有 requirement) 优先使用 wheel 构建,如果没有本地编译 pip 会创建一个临时隔离环境 只安装 pyproject.toml 里声明的 build-system.requires 当前环境的 torch / numpy / cuda 都不可见 Pip 相关选项 —no-build-isolation:构建时直接用当前环境里的包 —no-use-pep517:不用 PEP 517 新构建系统,走 setup.py install —no-deps:...

  • python项目构建

    Python 项目构建 现代 Python 项目基本围绕 PEP 517/518/621: PEP 518:构建工具写在哪里?构建前要先装什么? PEP 517:pip / uv 应该如何“调用构建后端”? PEP 621:项目元数据应该如何标准化地写? 常见 python project 构建配置文件 pyproject.toml:项目元数据 + 构建配置的统一入口 build backend(构建后端):真正构建项目二进制包的实现(setuptools / hatchling / flit / poetry-core…) build frontend(构建前端):调用后端去构建 wheel...

  • Asyncio

    Python 中的Asyncio 使用单线程 + 事件循环 (Event Loop)。这是一种协作式多任务。 代码执行到 await(比如等待网络响应)时,主动交出控制权挂起自己,让事件循环去执行其他任务。等到网络响应回来了,再恢复执行。 优缺点 适用场景:高并发 I/O(特别是网络连接)。 比如:高性能 Web 服务器(FastAPI)、WebSocket 服务、同时处理数万个长连接。 优缺点: ✅ 极致轻量:没有线程切换的操作系统开销,内存占用极低,能处理 C10k(万级并发)问题。 ❌ 传染性:一旦用了 async,整个调用链都要变成异步。 ❌ 怕阻塞:因为是单线程,如果中间混入了一个耗...

  • Python 中的并行

    Python 中的并行 基于线程的并行 threading 模块提供了一种在单个进程内部并发地运行多个 线程 (从进程分出的更小单位) 的方式。 它允许创建和管理线程,以便能够平行地执行多个任务,并共享内存空间。 线程特别适用于 I/O 密集型的任务,如文件操作或发送网络请求,在此类任务中大部分时间都会消耗于等待外部资源。 伪并行 在 CPython 中,由于存在 全局解释器锁(GIL),同一时刻只有一个线程可以执行 Python 代码(虽然某些性能导向的库可能会去除此限制)。 如果你想让你的应用更好地利用多核心计算机的计算资源,推荐你使用 multiprocessing 或 concurre...

  • Python 中的装饰器

    Python 中的装饰器 它是 Python 3.7 引入的一个标准库工具(from dataclasses import dataclass)。它的主要作用是 自动生成样板代码。 装饰器本质上就是一个 “接收一个函数/类,并返回一个新的函数/类”的高阶函数 工作流程 @dataclass 的核心工作流程是利用 Python 的 元编程 (Metaprogramming) 能力。具体步骤如下: 读取类型注解 (__annotations__): Python 的类会把变量定义的类型保存在 __annotations__ 字典中。 dataclass 函数会去读取 Student 类中的 nam...