簡體   English   中英

Python和CPU使用率

[英]Python and CPU usage

我使用Python編寫了一段非常耗時的代碼(包含許多遞歸)。 我正在測試代碼的運行時,並且發現無論代碼變得多么復雜,Python都不會消耗CPU的全部計算能力。 我在具有Intel Dual Core的Windows7上運行Python,而Python從未使用超過1個CPU。 基本上一個CPU在運行,而另一個在空閑。

有人可以解釋一下后台發生的事情嗎? 提前致謝!

您的腳本在單個進程中運行,因此在單個處理器上運行。 Windows調度程序可能會很頻繁地將其從一個內核轉移到另一個內核,但是它一次不能在一個以上的地方運行一個進程。

如果要使用更多的CPU資源,則需要弄清楚如何分配工作負載,以便可以在多個進程中運行代碼的多個實例。

如果您的python應用程序不是多線程的,它將不會使用超過1個cpu內核來執行。

實際上,多線程Python應用程序不足以使用cpu的多個內核。 Python使用一種稱為“全局解釋器鎖定”(GIL)的構造。 Python實例中的所有代碼都必須獲得此鎖,這意味着在Python應用程序中,即使您有多個處理器並且是多線程的,在任何給定的時間點也只能執行一個代碼線程。

就是說-如果您使用多處理模塊,則可以使用多個內核:

import multiprocessing

def run():
    x = 1+1
    save(x)

if __name__=="__main__":
    for i in range(100):
        p = multiprocessing.Process(target=run)
        p.start()

暫無
暫無

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

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