java 和 python 之间的并行处理差异

Difference in parallel processing between java and python

我使用java.util.concurrent.ForkJoinPool制作并行处理程序。在执行此程序时,我检查了 tophtop,并注意到在 top 中只有一个 java 进程,但在 htop 中有许多进程。

学长正在用python写并行处理程序,他说top只有一个进程很奇怪。他还说 top 中的 "CPU usage" 通常超过 90%。但是我的程序只使用了大约68%。

我以为是java和python实现并行处理的方式不同造成的。但是不知道对不对。请告诉我造成这种差异的正确原因。

谢谢。

您的前辈是否在 python 中实现了多处理或多线程?要查看差异,请查看 Multiprocessing vs Threading Python

我很确定他在进行多处理,这会产生多个进程,这些进程是真实的副本而不是具有共享内存的线程。 top/htop 的行为是正确的。 top 仅显示进程,而 htop 还显示线程。

不同之处在于您使用的是多线程,而您的前辈似乎使用多处理也解释了不同的 CPU 用法。

您可以在 htop 中按 H,这将切换用户线程的视图。现在它应该与顶部的视图几乎相同。