在多个核心上运行Python线程

5 投票
1 回答
3669 浏览
提问于 2025-04-18 10:57

我知道在Python 2.7中,无法在不同的核心上同时运行多个线程,因此你需要使用multiprocessing模块来实现一定程度的并发。我在查看Python 3.4中的concurrent.futures模块。使用ThreadPoolExecutor是否可以让你在不同的进程上运行不同的线程,还是说它仍然受到全局解释器锁(GIL)的限制?如果不行,有没有办法在Python 3.4中让线程在不同的处理器上运行?

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

1 个回答

5

不,ThreadPoolExecutor 只是一个用来帮助安排多个线程工作的类。所有正常的线程限制仍然适用。

为了澄清一些误解,线程会根据操作系统的选择在不同的处理器或核心上运行,只是它们不会同时运行。例外情况是一些基于 C 的函数在执行不需要锁的操作时,会暂时释放全局解释器锁(GIL)。

撰写回答