如果`threading`模块由于GIL而没有真正让多个线程同时运行,为什么ParallelPython使用我的所有内核?

vla*_*ean 2 python python-multithreading

AFAIK,threading.Thread实例实际上不能并行运行,因为Global Interpreter Lock会强制一个线程只能在任何时间运行(除了阻塞I/O操作时).

ParalellPython使用该threading模块.

但是,如果我向它提交多个本地作业,它会并行执行它们,或者至少看起来如此.我有8个核心,如果我开始8个作业来简单地运行空循环,它们都占用CPU的12-13%(这意味着它们每个都在一个核心上执行,我可以在我的任务管理器中看到这个)

有谁知道这会怎么样?

Lev*_*sky 6

正如链接页面所说,

PP模块克服了这个限制,并提供了一种编写并行python应用程序的简单方法.内部ppsmp使用流程和IPC(进程间通信)来组织并行计算

因此,实际的并行性必须是由于调用多个进程,正如人们所期望的那样.