【发布时间】:2010-11-02 18:58:21
【问题描述】:
我很好奇 Python 中的 Global Interpreter Lock 是如何工作的。如果我有一个 c++ 应用程序启动四个单独的 python 脚本实例,它们将在不同的内核上并行运行,或者 GIL 是否更深入,然后只是启动的单个进程并控制所有 python 进程,而不管产生它的进程?
【问题讨论】:
标签: python
我很好奇 Python 中的 Global Interpreter Lock 是如何工作的。如果我有一个 c++ 应用程序启动四个单独的 python 脚本实例,它们将在不同的内核上并行运行,或者 GIL 是否更深入,然后只是启动的单个进程并控制所有 python 进程,而不管产生它的进程?
【问题讨论】:
标签: python
GIL 仅影响单个进程中的线程。 multiprocessing 模块实际上是 threading 的替代品,它允许 Python 程序使用多个内核 &c。您的方案也很容易允许使用多个内核。
【讨论】:
正如 Alex Martelli 指出的那样,您确实可以通过运行多个进程来避免 GIL,我只想补充并指出 GIL 是实现的限制(CPython),而不是一般的 Python,可以实现Python 没有这个限制。 Stackless Python 浮现在脑海中。
【讨论】: