java 和 python 之间的并行处理差异
Difference in parallel processing between java and python
我使用java.util.concurrent.ForkJoinPool制作并行处理程序。在执行此程序时,我检查了 top
和 htop
,并注意到在 top
中只有一个 java 进程,但在 htop
中有许多进程。
学长正在用python写并行处理程序,他说top
只有一个进程很奇怪。他还说 top
中的 "CPU usage" 通常超过 90%。但是我的程序只使用了大约68%。
我以为是java和python实现并行处理的方式不同造成的。但是不知道对不对。请告诉我造成这种差异的正确原因。
谢谢。
您的前辈是否在 python 中实现了多处理或多线程?要查看差异,请查看 Multiprocessing vs Threading Python
我很确定他在进行多处理,这会产生多个进程,这些进程是真实的副本而不是具有共享内存的线程。 top
/htop
的行为是正确的。 top
仅显示进程,而 htop
还显示线程。
不同之处在于您使用的是多线程,而您的前辈似乎使用多处理也解释了不同的 CPU 用法。
您可以在 htop
中按 H
,这将切换用户线程的视图。现在它应该与顶部的视图几乎相同。
我使用java.util.concurrent.ForkJoinPool制作并行处理程序。在执行此程序时,我检查了 top
和 htop
,并注意到在 top
中只有一个 java 进程,但在 htop
中有许多进程。
学长正在用python写并行处理程序,他说top
只有一个进程很奇怪。他还说 top
中的 "CPU usage" 通常超过 90%。但是我的程序只使用了大约68%。
我以为是java和python实现并行处理的方式不同造成的。但是不知道对不对。请告诉我造成这种差异的正确原因。
谢谢。
您的前辈是否在 python 中实现了多处理或多线程?要查看差异,请查看 Multiprocessing vs Threading Python
我很确定他在进行多处理,这会产生多个进程,这些进程是真实的副本而不是具有共享内存的线程。 top
/htop
的行为是正确的。 top
仅显示进程,而 htop
还显示线程。
不同之处在于您使用的是多线程,而您的前辈似乎使用多处理也解释了不同的 CPU 用法。
您可以在 htop
中按 H
,这将切换用户线程的视图。现在它应该与顶部的视图几乎相同。