【问题标题】:Difference in parallel processing between java and pythonjava和python并行处理的区别
【发布时间】:2018-06-26 08:55:13
【问题描述】:

我使用 java.util.concurrent.ForkJoinPool 制作并行处理程序。在执行这个程序时,我检查了tophtop,发现top 中只有一个java 进程,而htop 中有很多进程。

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

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

谢谢。

【问题讨论】:

  • 也许只是因为你没有在你的代码中做同样的事情。但我们不能说,因为我们看不到它......
  • top 默认不显示线程,而htop 显示。你可以使用top -H 看看会发生什么。可能是 Python 程序使用进程而不是线程。我将使用线程与使用进程之间的区别留给您的研究工作。
  • 我认为我们需要查看您的代码。在 Java 中编写并行代码的方式有很多不正确,这将导致没有有效的并行性。
  • >先生。 vincrichaud 和斯蒂芬先生感谢您的回复。我在我的问题中添加了源代码链接。
  • >先生。 RealSkeptic 感谢您的回复。我检查了top -H 并且有很多线程。我将通过使用进程或线程来研究并行处理。

标签: java python parallel-processing forkjoinpool


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2011-11-20
    • 2018-01-12
    相关资源
    最近更新 更多