【问题标题】:Python multiprocessing not reducing processing time muchPython多处理并没有大大减少处理时间
【发布时间】:2017-07-23 02:49:25
【问题描述】:

在我的项目中,我实现了python-multiprocessing 以提高处理速度。我在一个 4 核系统中对其进行了测试。但它仅显示处理时间减少了约 25%。

这是一个示例代码:

t1 = time.time()
p = Pool()
p.map(functin, file_list)
p.close()
p.join()
print '==========================================================='
print 'Pool put resume  took := ',time.time() - t1
print '==========================================================='

从理论上讲,处理时间应该减少 1\4th,因为 4 个内核正在执行该功能,而不是单个内核。我还检查了任务管理器并确认有 4 个进程正在运行。 因此,请任何人解释为什么它没有显示处理时间显着减少。我是否缺少任何配置?

【问题讨论】:

  • 处理减少 25% 和 1/4 有什么区别?
  • 假设这个过程通常需要 100 秒,现在使用多处理在 75 秒内完成。但理论上它应该在 25 秒内完成。我的意思是@ShubhamNamdeo

标签: python django python-multiprocessing


【解决方案1】:

从您显示的代码中,我看到您将一些函数应用于名为 file_list 的东西,因此看起来您在函数中使用文件。在这种情况下,我猜你的代码大部分时间都花在了 I/O 上,它的性能受到硬盘驱动器速度的限制,而不是内核数量。

【讨论】:

  • 所以您是说多处理不会对文件操作产生重大影响?
  • 不,不会。您不能通过同时读取两个文件来使硬盘驱动器的速度翻倍,因为磁盘操作在物理级别上是连续的。在 HDD(而不是 SSD)的情况下尝试同时执行多个文件实际上会在某些情况下因为寻道时间而使事情变慢(读取头应该在磁盘的不同区域之间移动)。
  • 我的功能是将文件读取到 tika 服务器。那么您能提出一个减少此操作时间的最佳方法吗?
  • 是的,那么您观察到的行为并不奇怪。
  • 您能提出一个减少此操作时间的最佳方法吗?
猜你喜欢
  • 2021-12-23
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 2012-08-12
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多