【问题标题】:Memory Error in Python 3 and Windows 64Python 3 和 Windows 64 中的内存错误
【发布时间】:2018-03-07 16:42:18
【问题描述】:

我知道之前有人问过与内存错误相关的问题,例如 hereherehereherehere。建议的解决方案始终是切换到 Python 3 和/或 Window 64 位,或者在代码错误的情况下修复代码。但是,我已经在 Python 3 和 Win 64 上。我还可以从 Windows 任务管理器中看到,当 Python 抛出内存错误时,我的 64GB 内存中仍有几 GB 可用。

我有大约 15 个日期索引的 pandas 数据帧,每个数据帧有 14000 行,平均 5000 列浮点数据,以及大约 40-50% 的 NaN 值,我从硬盘读取。我不能简单地删除 NaN,因为不同的列在不同的日期有 NaN。当我尝试将它们与pd.concat() 连接时发生内存错误。所以这不是一些错误代码或while循环的问题。如果我将某些数据帧排除在串联之外,则串联中不会发生内存错误,但是当我尝试对串联数据进行 Scikit 学习决策树分析时,就会发生这种情况。

我的问题是如何让 Python 使用所有可用内存而不抛出内存错误?

编辑:添加截图 IPython 解释器截图(我什至没有安装 Python 2):

系统信息截图:

【问题讨论】:

  • 您没有提供证据证明您在 64 位 Windows 上使用了 64 位版本的 Python。请张贴任务管理器的截图,我们可以看到你的python实际上是64位的。
  • 当您谈论 PC 中的 RAM 时,这就是物理内存。但是 Python 用完了虚拟内存。
  • @ThomasWeller,我添加了截图。坦率地说,我不在乎它用完了什么类型的内存。我只需要阻止它:-)
  • 如果你不在乎,你会测量错误的值。在屏幕截图中显示:可用虚拟内存 25 GB。如果您将 15 个表*14000 行*5000 列的 4 字节浮点数加载到内存中,则至少约为 4.2 GB,不考虑任何开销。现在,如果将第一个表与第二个表结合起来,它将需要 2*280=560 MB。然后将它与下一个表结合起来:840 MB,然后是 1.1 Gb 等等……直到最后一个表是 4.2 GB。总结一下,它将是约 8 GB 加上原来的 4.2 GB,所以它是 12 GB。 Panda 很容易有 100% 的开销,所以是 24 GB(我知道其他库有 700% 的开销)。
  • @ThomasWeller,谢谢。那很有启发性。如果我从 Windows 性能管理中增加虚拟内存大小,它会解决问题吗?

标签: python windows python-3.x memory-management


【解决方案1】:

这里有一些来自他们的sn-ps信息的链接,希望对你有帮助。

How to give programs more RAM

增加您的页面文件。页面文件是硬盘的一部分 由处理器用作 RAM,也称为虚拟 记忆。虽然它不如 RAM 快,因为它在物理上 位于硬盘驱动器上,增加它有时可以增加程序 表现。要访问它,请打开您的控制面板。点击“系统” 然后是“高级系统设置”,然后是“设置” “性能”标签。

How do you set the memory usage for python programs

如果你想限制python vm内存使用,你可以试试这个: 1、Linux, ulimit命令限制python上的内存使用 2、可以使用 资源模块,限制程序内存使用;如果你想加快速度 尽管为您的应用程序提供更多内存,但您可以启动您的程序,您可以 试试这个: 1\threading, multiprocessing 2\pypy 3\pysco on only python 2.5

Assign memory application

!.右击我的电脑 2.属性>高级>性能>设置>高级 3.在Virtual Memory下,检查Paging File size,(如果内存服务,经验法则是总V的1/2。内存可能会被使用。如果你使用更多, 应用程序之间的页面文件打架。和操作系统。希望对您有所帮助

Allocate memory process server

由于某些程序需要比其他程序更多的内存才能运行,因此您可以 使用任务管理器为特定进程分配额外的内存 为了提高性能。

其他

http://stackoverflow.com/questions/1760025/limit-python-vm-memory

http://stackoverflow.com/questions/2308091/how-to-limit-python-heap-size

【讨论】:

    【解决方案2】:

    我的电脑配置为 8GB 内存和 Windows 10 x64 操作系统。此外,那里还安装了 Python 3。当 python 脚本读取 CSV 文件时,我遇到了这种异常。幸运的是,一旦页面文件的初始容量和最大容量增加,问题就解决了。

    有关如何增加页面文件值的说明,您可以查看这个 SO 答案:here

    【讨论】:

      【解决方案3】:

      我的建议是增加您的页面文件。 我遇到了同样的问题,并且增加了我的页面文件。

      如果您打开控制面板,您就可以做到这一点。单击“系统”,然后单击“高级系统设置”,然后单击“性能”选项卡中的“设置”。 默认情况下,Windows 只为页面文件提供 0.5GB。 我将我的 pafefile 增加到 16GB,我的代码就像一个魅力。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-01-31
        • 2016-05-10
        • 2018-04-29
        • 1970-01-01
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-03
        相关资源
        最近更新 更多