2014-06-24 40 views
2

我知道Python 2.7不允许在不同核心上运行多个线程,并且需要使用multiprocessing模块才能达到某种程度的并发性。我在Python 3.4中查看concurrent.futures模块。使用ThreadPoolExecutor是否允许您在不同的进程上运行不同的线程,还是仍然受GIL限制约束?如果没有,是否有一种使用Python 3.4在不同处理器上运行线程的方法?在多个核心上运行python线程

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

+0

只是好奇 - 在什么情况下多个进程是绝对不可行的? – Roberto

+0

我们假设你正在研究一个内存很少的嵌入式系统。在那里产生多个进程并不是一个好主意,对吧?尽管我同意Python不应该成为选择的语言。这只是我正在进行的一个小实验。 –

回答

3

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

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

+0

谢谢。这完全回答了这个问题! –