0

我正在实现两个在多代理框架中运行的算法,因此每个代理都应该运行该算法。第一个算法是顺序的,每个代理都应该等待前一个,但第二个是并发的。

我用线程实现了两者,并且与串行情况相比,两者的运行时间或多或少相同(对于顺序是预期的,但对于并发情况则不是)。我将代码更改为使用进程,两种算法的时间都慢了 20 倍。这是正常的吗?

编辑1:算法的思想是每个代理同时运行它,然后从算法返回参数到主程序以计算平均值。该平均值用于算法的下一次迭代,依此类推......我正在使用多处理队列执行的参数返回可能是时间缓慢的问题?

在此处输入图像描述

4

1 回答 1

1

线程与进程

为什么线程可以更快:

  • 产生一个新进程比启动一个新线程要慢得多。
  • 进程之间的通信比线程之间的通信要慢得多。
  • 线程比进程需要更少的内存。
  • 如果您在单处理器机器上,线程应该具有与进程相似的性能(鉴于上述警告)。

为什么流程可以更快:

  • 如果您在多处理器机器上,进程将能够同时使用所有处理器进行计算并为您提供更好的性能。
  • 如果一个进程崩溃,它不会关闭其他进程,而如果一个线程崩溃(不是异常,实际解释器
    崩溃),它将关闭所有线程。
于 2016-06-15T15:47:12.473 回答