2014-01-21 41 views
1

以下代碼似乎是按順序而不是併發執行的。 它只使用一個CPU內核。 有沒有辦法讓它使用多個內核或在線程之間切換內容? (我希望它可以工作就像在Java線程類。)如何在python中充分利用帶有線程的CPU核心2

import threading 

def work(s) : 
    for i in range(100) : 
     print s 
     for j in range (12345678) : 
      pass 

a = [] 
for i in range(3) : 
    thd = threading.Thread(target = work('#'+str(i))) 
    a.append(thd) 

for k in a : k.start() 
for k in a : k.join() 

print "Ended." 

回答

4

線程不能利用在Python多個內核。過程可以。

multiprocessing是一個程序包,它支持使用類似於線程模塊的 API的產卵進程。多處理包 提供本地和遠程併發,通過使用子進程而不是線程有效地側移全局解釋器鎖。 由於這個原因,多處理模塊允許編程人員在給定機器上充分利用多個處理器來充分利用 。它運行在Unix 和Windows上。

點擊here瞭解更多信息