我很好奇python中的Global Interpreter Lock实际上是如何工作的。如果我有一个c ++应用程序启动python脚本的四个单独实例将在不同的内核上并行运行,或者GIL是否更深入,然后只是启动的单个进程并控制所有python进程,无论生成它的进程如何?
答案 0 :(得分:28)
GIL仅影响单个进程中的线程。 multiprocessing
模块实际上是threading
的替代方案,它允许Python程序使用多个核心& c。您的方案也很容易允许使用多个核心。
答案 1 :(得分:2)
正如Alex Martelli指出你确实可以通过运行多个进程来避免GIL,我只想添加并指出GIL是实现的限制(CPython)而不是Python的一般限制,它可以实现没有这个限制的Python。想到Stackless Python。