如何使用top命令查看并行化的Python程序?

我在共享集群上工作.我已经看到人们在这个集群上运行并行化的c代码,当我使用top来查看正在运行的进程时,会显示正在使用(例如)400%的CPU,因为他们对单个实例使用了四个处理器他们的代码.

现在有人正在运行(我听到的)一个并行化的Python代码.但是,不是顶部显示Python代码使用400%的CPU,而是显示为四个不同的进程,每个进程使用自己的处理器(100%).

我想知道,Python(并行化时)显示顶部运行多个不同的进程(而不是C)或者这个Python代码实际上并不是并行运行的吗?

我不知道Stack Exchange是否会成为这个问题的更好地方.因为我使用顶部我认为这个地方会更好.让我知道我是否应该移动它.

解决方法:

您在C中看到的是使用线程,因此进程使用是其所有线程的总和.如果有4个线程,每个CPU使用率为100%,则该过程将显示为400%

您在python中看到的几乎肯定是通过多进程模型的并行性.这是一个旨在克服Python的线程限制的模型. Python一次只能运行一个线程(参见Python Global Interpreter Lock – GIL).为了做得更好,可以使用最终创建进程而不是线程的多进程模块,这反过来在ps中显示为多个进程,然后每个进程可以使用高达100%的CPU,因为它们(每个)单个 – 螺纹.

我敢打赌,如果你运行ps -afeT,你会看到C程序的线程,但没有python程序的额外线程.

上一篇:Flink并行度与slot之间的关系


下一篇:并发(concurrency)和并行(parallelism)区别