它来了!真正的 python 多线程
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
IBM工程师Martin Heinz最近宣布,Python 3.12将引入"Per-Interpreter GIL",这将使Python能够实现真正的并行/并发。由于Python GIL(全局解释器锁)的存在,Python的多线程/进程并不是真正的多线程/进程。
Python 3.12(预计2023年10月发布)将包含"Per-Interpreter GIL"特性,这一特性使得每个Python子解释器都有自己的GIL,从而实现真正的并发。官方提案PEP 684为我们提供了更详细的信息。
想要利用这一新功能,开发者需要安装最新的Python版本,这通常需要从源码编译安装。然而,"Per-Interpreter GIL"目前只能通过C-API访问,未提供直接的Python API。PEP 554预计将在Python 3.13中引入相关接口。
尽管Python中没有直接的模块可以导入来使用子解释器,但CPython代码库中有一些示例代码。开发者可以通过_xxsubinterpreters模块或者使用CPython的测试模块中的示例Interpreter和Channel类。
通常情况下,使用CPython的test模块中的辅助函数来创建和运行子解释器更为方便。还可以利用threading模块中的接口来在新线程中自动生成新的子解释器。
另外,CPython test模块中的RecvChannel和SendChannel类实现了类似于Golang通道的功能,允许在不同的解释器之间发送和接收数据。
如果开发者需要调整子解释器的选项,可以使用test.support模块中的run_in_subinterp_with_config函数。
最后,作者鼓励读者如果喜欢文章就进行支持,表明这是他创作的最大动力。
想要了解更多内容?