我知道Python 2.7不允许在不同的内核上运行多个线程,并且需要使用multiprocessing
模块才能实现某种程度的并发。我在查看Python 3.4中的concurrent.futures
模块。使用ThreadPoolExecutor
是否允许您在不同进程上运行不同的线程,还是仍然受GIL约束约束?如果没有,有没有办法使用Python 3.4在不同的处理器上运行线程?
对于我的用例,使用多个进程绝对不可行。
答案 0 :(得分:3)
没有。 ThreadPoolExector只是一个帮助调度多线程工作的类。所有正常的线程约束仍然适用。
为了消除一些混乱,线程将在操作系统选择的不同处理器/内核上运行,它们不会同时运行。例外情况是,某些基于C的函数会在执行不需要锁定的操作时临时释放GIL。