在多核上运行 python 线程

Dip*_*jee 5 python multithreading python-3.4 concurrent.futures

我知道Python 2.7不允许在不同的内核上运行多个线程,并且您需要使用该multiprocessing模块才能实现某种程度的并发性。我正在查看concurrent.futuresPython 3.4 中的模块。使用 a 是否ThreadPoolExecutor允许您在不同的进程上运行不同的线程,或者它仍然受到 GIL 约束?如果没有,是否有办法使用 Python 3.4 在不同处理器上运行线程?

对于我的用例来说,使用多个进程是绝对不可行的。

tde*_*ney 5

不。ThreadPoolExector 只是一个帮助在多个线程上调度工作的类。所有正常的线程约束仍然适用。

为了消除一些混乱,线程将根据操作系统的选择在不同的处理器/内核上运行,它们只是不会同时运行。例外情况是,某些基于 C 的函数在执行不需要锁的操作时会暂时释放 GIL。