【问题标题】:Python program takes too long to execute for the first time? [duplicate]Python程序第一次执行耗时太长? [复制]
【发布时间】:2021-02-28 03:36:09
【问题描述】:

我有一个 python 脚本,它基本上采用精确的电力负载数据、太阳能生产数据并进行一些能量流分析。这是一个相当复杂的算法,涉及大量循环和巨大的 DataFrame、矩阵和数组。当我在脚本上工作一段时间时,平均需要 35 秒才能执行。我机器的所有风扇都开始吹了。

但是假设我离开我的电脑 3-4 小时然后回来,同样的代码需要超过 120 秒才能执行。

为什么会这样?有什么办法可以避免这种情况?

任何帮助将不胜感激。

【问题讨论】:

  • 感谢@Samwise 的评论。这是一个非常有趣的现象。有没有办法以相同的速度启动程序,或者在开始时有一个热缓存?

标签: python pandas performance numpy


【解决方案1】:

这是因为缓存而发生的。 当您第一次从同一个地方加载数据时,数据存储在一个更容易访问的地方(缓存),因为相信您很快就会再次使用该数据。 当您离开计算机时,该空间将充满其他进程使用的其他数据。 这是如何构建计算机的基本部分,并且各种优化芯片设计人员添加以使计算机 (CPU) 更快。 这种现象也称为“冷运行”。

编辑: 加载数据包括将实际代码段(堆、堆栈等)加载到内存中

【讨论】:

  • 感谢您提供的信息丰富的回答。有没有办法我可以第一次“热运行”我的代码?因为它需要另外2-3个小时才能进入原始速度。我不想等那么久。
  • 没有真正的快速修复方法。如果您在每次运行时打开了一个文件,那么可能会在脚本提供帮助之前打开它。您需要先了解缓存背后的概念,它会根据您的使用情况加载和存储数据,因此没有快速的技巧可以克服这一点
  • 也许可以优化脚本本身。例如,如果脚本当前重复加载相同的文件,那么在文件系统使用该内容预热缓存后它会加速,但您可以通过让脚本仅将文件加载到内存中一次来完全避免 FS 缓存。
  • 正如@Samwise 所说,您也许可以优化脚本的某些方面,但无法将“冷运行”带到与未来运行相同的起始条件。一开始要付出一个小小的“代价”
猜你喜欢
  • 2013-01-02
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2014-03-01
  • 1970-01-01
  • 2017-09-01
  • 2019-11-22
相关资源
最近更新 更多