Python

使用 top 命令的並行化 Python 程序看起來如何?

  • September 18, 2017

我在一個共享集群上工作。我已經看到人們在這個集群上執行並行化的 c 程式碼,當我top用來查看正在執行的程序時,顯示它正在使用(例如)400% 的 CPU,因為他們為單個實例使用了四個處理器他們的程式碼。

現在有人正在執行(我聽說是)並行化的 Python 程式碼。但是,不是top顯示 Python 程式碼使用 400% 的 CPU,而是顯示為四個不同的程序,每個程序都使用自己的處理器(100%)。

我想知道,Python(並行化時)是否顯示top執行盡可能多的不同程序(而不是 C),或者這個 Python 程式碼實際上不是並行執行的?

我不知道 Stack Exchange 是否更適合解決這個問題。由於我正在使用top,我認為這個地方會更好。讓我知道我是否應該移動它。

您在 C 中看到的是使用執行緒,因此程序使用量是其所有執行緒的總和。如果有 4 個執行緒,每個執行緒的 CPU 使用率為 100%,則程序將顯示為 400%

您在 python 中看到的幾乎可以肯定是通過多程序模型實現的並行性。這是一個旨在克服 Python 執行緒限制的模型。Python 一次只能執行一個執行緒(參見 Python Global Interpreter Lock - GIL)。為了做得更好,可以使用多程序模組,該模組最終創建程序而不是執行緒,而執行緒又在 ps 中顯示為多個程序,然後每個程序可以使用高達 100% 的 CPU,因為它們(每個)都是單程序 -螺紋。

我敢打賭,如果你執行ps -afeT,你會看到 C 程序的執行緒,但不會看到 python 程序的額外執行緒。

引用自:https://unix.stackexchange.com/questions/137051