Python 3.12将开启并发和并行编程模型
💡
原文中文,约4500字,阅读约需11分钟。
📝
内容提要
PEP 684引入了Per-Interpreter GIL,允许每个解释器拥有自己独特的GIL,使得Python程序能够充分利用多个CPU核心。目前只能通过C-API使用,但预计在3.13版本中将引入Python API。
🎯
关键要点
- PEP 684 引入了每解释器的 GIL,允许每个解释器拥有独特的 GIL。
- Python 程序能够充分利用多个 CPU 核心。
- 目前只能通过 C-API 使用,预计在 Python 3.13 版本中将引入 Python API。
- Python 3.12 中提供了带有 C-API 的每解释器 GIL。
- PEP 684 使用 Py_NewInterpreterFromConfig() 函数创建具有自己 GIL 的解释器。
- CPython 自 1.5 版本以来支持在同一进程中运行多个解释器,但它们共享大量全局状态。
- PEP 734 建议添加一个新模块以支持在多个解释器中检查、创建和运行代码。
- 解释器状态与线程状态之间的关系是一对多,线程状态只属于一个解释器。
- 解释器之间是严格隔离的,不共享对象,只有少数全局状态被共享。
- 可变状态包括文件描述符和进程内存,不可变状态包括内置类型和模块数据。
- 内置函数 exec() 可用于执行 Python 代码,运行在当前操作系统线程中。
➡️