我使用java.util.concurrent.ForkJoinPool制作并行处理程序。在继续执行此程序时,我检查了top
和htop
,并注意到在top
中只有一个Java进程,而在htop
中有很多进程。
我的大四学生正在使用python编写并行处理程序,他说top
中只有一个进程很奇怪。他还说top
中的“ CPU使用率”通常超过90%。但是我的程序只使用了68%。
我认为原因在于java和python之间如何实现并行处理。但是我不知道这是否正确。请告诉我造成这种差异的正确原因。
谢谢。
答案 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
,以切换用户线程的视图。现在,它应该与顶部的视图几乎相同。