2009-11-26 48 views

回答

8

你必須使用單獨的進程(因爲經常提到的GIL)。 multiprocessing module在這裏提供幫助。

from multiprocessing import Process 
from somewhere import A, B 
if __name__ == '__main__': 
    procs = [ Process(target=t) for t in (A,B) ] 

    for p in procs: 
     p.start() 

    for p in procs: 
     p.join() 
0

假設您使用CPython(參考實現),由於Global Interpreter Lock,答案是。在CPython中,線程主要用於有很多IO(一個線程等待,另一個執行計算)的情況。

0

通常,運行不同的線程是在多核上運行的最佳可移植方式。當然,在Python中,全局解釋器鎖使得這是一個有爭議的問題 - 一次只有一個線程會取得進展。

0

由於全局解釋器鎖定,Python程序一次只能運行一個線程。如果你想要真正的多核Python編程,你可以看看Jython(它可以訪問JVM的線程)或者擁有類似Go的通道和tasklet的精彩stackless

相關問題