簡體   English   中英

在python的不同內核上運行方法

[英]Running methods on different cores on python

有沒有簡單的方法可以制作2個方法,比如說MethodA()和MethodB()在2個不同的內核中運行? 我的意思不是2個不同的線程。 我正在Windows中運行,但是我想知道是否可以獨立於平台。

編輯:那又如何

http://docs.python.org/dev/library/multiprocessing.html並行python嗎?

您必須使用單獨的過程(由於經常提到的GIL)。 多處理模塊在這里提供幫助。

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中,全局解釋器鎖使這成為一個爭論點-一次只有一個線程會取得進展。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM