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

时间:2018-06-26 08:55:13

标签: java python parallel-processing forkjoinpool

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

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

我认为原因在于java和python之间如何实现并行处理。但是我不知道这是否正确。请告诉我造成这种差异的正确原因。

谢谢。

1 个答案:

答案 0 :(得分:1)

您的上级在python中实现了多处理或多线程吗?要查看差异,请查看Multiprocessing vs Threading Python

我很确定他正在执行多处理,这会产生多个进程,这些进程是真实副本,而不是具有共享内存的线程。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div class="idSelect" id="test1">test1</div> <div class="idSelect" id="test2">test2</div> <div class="idSelect" id="test3">test3</div> <script src="https://code.jquery.com/jquery-3.1.0.js"></script> <script> var ids = []; $('.idSelect').each(function(i, el) { if (el.id == '') { return; } ids.push('#' + el.id); }); console.log(ids.join(',')); $(ids.join(',')).on('click', function(e) { console.log('clicked'); }) </script> </body> </html> / top的行为是正确的。 htop仅显示进程,而top也显示线程。

区别在于您正在使用多线程,而您的上级似乎使用了多处理,这也解释了不同的CPU使用情况。

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