2014-06-24 71 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

謝謝。這完全回答了這個問題! –