运行独立的Python进程可以避免GIL吗?

25 投票
2 回答
7042 浏览
提问于 2025-04-15 12:14

我很好奇Python中的全局解释器锁(GIL)是怎么工作的。如果我有一个C++应用程序启动了四个独立的Python脚本实例,它们会在不同的核心上并行运行吗?还是说GIL的影响比我启动的单个进程还要深,实际上控制所有的Python进程,不管是哪个进程启动的?

2 个回答

5

正如Alex Martelli所说,你确实可以通过运行多个进程来避免GIL(全局解释器锁)。我想补充一点,GIL是CPython这个具体实现的限制,而不是Python语言本身的限制。其实是可以实现一种没有这个限制的Python,比如说Stackless Python

36

全局解释锁(GIL)只会影响同一个进程里的线程。multiprocessing模块其实是一个替代方案,可以让Python程序使用多个核心等功能。你的情况也很容易就能利用多个核心。

撰写回答