在多个核心上运行Python线程
我知道在Python 2.7中,无法在不同的核心上同时运行多个线程,因此你需要使用multiprocessing
模块来实现一定程度的并发。我在查看Python 3.4中的concurrent.futures
模块。使用ThreadPoolExecutor
是否可以让你在不同的进程上运行不同的线程,还是说它仍然受到全局解释器锁(GIL)的限制?如果不行,有没有办法在Python 3.4中让线程在不同的处理器上运行?
对于我的使用场景,使用多个进程绝对不可行。
1 个回答
5
不,ThreadPoolExecutor 只是一个用来帮助安排多个线程工作的类。所有正常的线程限制仍然适用。
为了澄清一些误解,线程会根据操作系统的选择在不同的处理器或核心上运行,只是它们不会同时运行。例外情况是一些基于 C 的函数在执行不需要锁的操作时,会暂时释放全局解释器锁(GIL)。