扫码阅读
手机扫码阅读

它来了!真正的 python 多线程

112 2024-07-20

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:它来了!真正的 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函数。

最后,作者鼓励读者如果喜欢文章就进行支持,表明这是他创作的最大动力。

想要了解更多内容?

查看原文:它来了!真正的 python 多线程
文章来源:
咸鱼运维杂谈
扫码关注公众号