簡體   English   中英

Python多線程,它如何使用多個核心?

[英]Python multithreading, How is it using multiple Cores?

我在Intel(R)Core(TM)2 Duo CPU E7500 @ 2.93GHz上運行多線程應用程序(Python2.7.3)。 我認為它只使用一個核心但使用“top”命令我看到python進程不斷改變核心沒有。 在top命令中啟用“SHOW THREADS”可以顯示在不同內核上運行的不同線程進程。

有人可以解釋一下嗎? 正如我從理論上所知,多線程在單個核心上執行,這讓我很煩。

首先,多線程意味着相反 ,即同時使用多個內核(通過線程)。 CPython確實在這方面受到了挫折,盡管每當你調用C代碼(這包括部分標准庫,還有像Numpy這樣的擴展模塊)時,可以解鎖阻止Python代碼並發執行的鎖。 你仍然可以有多個線程,他們不會同時解釋Python(相反,他們會經常輪流)。 您還談到“Python 進程 ” - 您是否混淆了術語,或者這個“多線程”Python應用程序實際上是多處理 當然,多個Python進程可以並發運行。

但是,從你的措辭中我懷疑是另一個混​​亂的根源。 即使是單個線程也可以在多個核心上運行......但不能同時運行。 由操作系統決定哪個線程在哪個CPU上運行,並且OS調度程序不一定將線程重新分配給它在它被暫停之前運行的同一個CPU(這是有益的,正如David Schwartz在評論,但不重要)。 也就是說,單個線程/進程從CPU跳轉到CPU是完全正常的。

線程設計為在可用時利用多個核心。 如果你只有一個核心,它們也會在一個核心上運行。 :-)

沒有什么值得關注的,你觀察到的是“按預期工作”。

暫無
暫無

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

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