在CPython中,线程模块不使用多个核心,因为它使用全局解释器锁定。但是我最近从标准库中找到了multiprocessing module,据说可以回避GIL。所以我认为使用该模块可以在CPython中正确使用多个核心,但我想知道我是否正确。
我需要编写一个需要充分利用多个内核的应用程序,但这不是性能关键所以我可以用Python编写它,但我需要知道这个模块是否允许我使用多个内核?
答案 0 :(得分:6)
multiprocessing
库使用子进程;这些都在他们自己的Python解释器中运行。
操作系统可以并且将在多个进程和核心上安排这些进程,是的。因为每个子进程都是一个单独的Python解释器进程,所以GIL不会干扰。