【问题标题】:How to prevent the system space from running out while running the code运行代码时如何防止系统空间耗尽
【发布时间】:2021-11-11 07:30:03
【问题描述】:

我有一个很长的 python 代码要运行,当我早上运行它时,我的系统内存空间不足。我相信这是因为每次迭代都在不断增长的大列表。有什么办法可以在不丢失所有内存空间的情况下编译它? 如果我将代码粘贴到硬盘中,然后从那里运行它,会解决问题吗? 我正在使用 spyder。

提前致谢!

【问题讨论】:

  • 你的代码使用的空间,是堆栈和堆,如果你在变量(或内存)中运行代码保存列表,这个内存是你的内存而不是你的硬盘。因此从磁盘运行它不会解决这个问题。您可以考虑将列表(您认为正在消耗内存)存储在数据库或物理文件(文本文件)中。但是,在尝试解决它之前,您可能需要检查此列表是否真的是原因。
  • 无论如何,请显示你正在运行的代码。

标签: python memory spyder


【解决方案1】:

不,将程序从 IDE 保存到其他位置无济于事。可以使用常规的 Python 解释器而不是 Spyder 可能嵌入的东西来运行它可能会有所帮助。

您需要(从最简单到最难):

  • 在您的机器上启用交换内存(如果您的程序需要使用该交换内存,这将使您的程序运行缓慢)
  • 购买更多内存并将其安装到您的计算机中
  • 运行您的程序,例如内存更大的云机
  • 通过更高效的算法(例如更好的数据结构,或将部分计算存储在磁盘上)使您的程序使用更少的内存。

【讨论】:

  • 启用交换不一定会使程序运行速度变慢除非交换空间实际被利用
  • @DarkKnight 确实如此(已编辑到答案中),但如果 OP 无论如何都收到 MemoryError 也有点离题。选项是崩溃(无交换)或缓慢(有交换)。
猜你喜欢
  • 2022-01-03
  • 2012-05-28
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 2018-12-13
  • 1970-01-01
相关资源
最近更新 更多