Neu*_*tar 3 c top python parallelism
我在共享集群上工作。我见过有人在这个集群上运行并行化的 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 程序的其他线程。
归档时间: |
|
查看次数: |
1627 次 |
最近记录: |