我使用 java.util.concurrent.ForkJoinPool 制作并行处理程序。在继续这个程序时,我检查了top
和htop
,并注意到top
只有一个java进程,但在htop
中有很多进程。
我的前辈正在使用python编写并行处理程序,他说奇怪的是top
只有一个进程。他还说,top
的"CPU使用率"通常超过90%。但我的程序只使用了大约 68%。
我认为原因是Java和python之间如何实现并行处理的差异。但我不知道它是否正确。请告诉我这种差异的正确原因。
谢谢。
你的前辈是否在 python 中实现了多处理或多线程?要查看差异,请查看多处理与线程 Python
我很确定他正在做多处理,这会产生多个进程,这些进程是真正的副本,而不是具有共享内存的线程。top
/htop
的行为是正确的。top
仅显示进程,htop
还显示线程。
不同之处在于您使用的是多线程,而您的高级似乎使用多处理也解释了不同的 CPU 使用率。
您可以在htop
中按H
,这将切换用户线程的视图。现在它应该与顶部的视图几乎相同。