有沒有什麼簡單的方法可以讓2個方法,比如MethodA()和MethodB()運行在2個不同的內核上?我不是說2個不同的線程。我在Windows中運行,但我想知道是否可以獨立於平臺。python上的不同內核上運行方法
編輯:又是怎麼回事
http://docs.python.org/dev/library/multiprocessing.html 和 parallel python?
有沒有什麼簡單的方法可以讓2個方法,比如MethodA()和MethodB()運行在2個不同的內核上?我不是說2個不同的線程。我在Windows中運行,但我想知道是否可以獨立於平臺。python上的不同內核上運行方法
編輯:又是怎麼回事
http://docs.python.org/dev/library/multiprocessing.html 和 parallel python?
你必須使用單獨的進程(因爲經常提到的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()
假設您使用CPython(參考實現),由於Global Interpreter Lock,答案是否。在CPython中,線程主要用於有很多IO(一個線程等待,另一個執行計算)的情況。
通常,運行不同的線程是在多核上運行的最佳可移植方式。當然,在Python中,全局解釋器鎖使得這是一個有爭議的問題 - 一次只有一個線程會取得進展。