|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
|
|
|
|
|
### 协程
|
|
|
|
|
|
|
|
|
|
- 异步编程是一种编程范式,旨在提高程序的并发能力。
|
|
|
|
|
- 协程是异步编程的一种具体实现。协程是一种特殊的函数,可以在执行过程中暂停,并在稍后恢复执行。协程提供了一种轻量级的并发方式,允许多个任务在单线程内交错执行,非常适合 I/O 密集型场景。Python 中的协程通常通过 yield 或 async/await 语法实现: 生成器协程:使用 yield 关键字暂停和恢复执行 ; 原生协程:使用 async def 定义,通过 await 等待其他操作完成。
|
|
|
|
|
- 异步编程在 python 社区讨论中,常常等价于协程,甚至等价于 async
|
|
|
|
@ -14,7 +15,7 @@ JIT 跨平台,生成适合当前平台的机器码。
|
|
|
|
|
JIT 的工作原理:**解释执行**:程序开始时,代码以解释方式执行(逐行解释字节码)。 **热点检测**:JIT 编译器监控代码执行,识别频繁执行的代码段(称为“热点”)。 **动态编译**:将热点代码编译为机器码,后续执行直接运行机器码,避免解释执行的开销。 **优化**:JIT 编译器可以根据运行时信息进行优化(如内联函数、消除死代码)。
|
|
|
|
|
|
|
|
|
|
在 Python 中利用 JIT 加速的方法包括:
|
|
|
|
|
1. **PyPy**:通用的 Python 实现,适合大多数场景。pypy your_script.py
|
|
|
|
|
2. **Numba**:专注于数值计算,适合科学计算和数据分析。用 `@jit` 装饰器标记需要加速的函数。
|
|
|
|
|
3. **Cython**:将 Python 代码编译为 C 代码,适合需要极致性能的场景。支持 JIT 和 AOT 编译 。
|
|
|
|
|
4. **Taichi**:专注于高性能计算,适合图形学、物理仿真等领域。
|
|
|
|
|
- **PyPy**:通用的 Python 实现,适合大多数场景。pypy your_script.py
|
|
|
|
|
- **Numba**:专注于数值计算,适合科学计算和数据分析。用 `@jit` 装饰器标记需要加速的函数。
|
|
|
|
|
- **Cython**:将 Python 代码编译为 C 代码,适合需要极致性能的场景。支持 JIT 和 AOT 编译 。
|
|
|
|
|
- **Taichi**:专注于高性能计算,适合图形学、物理仿真等领域。
|