4

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

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

4

1 回答 1

5

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

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

于 2014-06-24T23:22:27.263 回答