限制python内存上限_64位窗口上的Python 32位内存限制

我遇到了一个我似乎无法理解的记忆问题。

我在Windows 7 64位机器上运行8GB内存并运行32位python程序。

这些程序读取了5,118个压缩的numpy文件(npz)。Windows报告磁盘上的文件占用1.98 GB

每个npz文件包含两个数据:'arr_0'的类型为np.float32,'arr_1'的类型为np.uint8

python脚本读取每个文件将其数据附加到两个列表中,然后关闭该文件。

在文件4284/5118周围,程序抛出一个MemoryException

但是,任务管理器说发生错误时python.exe * 32的内存使用量是1,854,848K~ = 1.8GB。远低于我的8 GB限制,或者假定的32位程序的4GB限制。

在程序中我捕获内存错误并报告:每个列表的长度为4285.第一个列表包含总共1,928,588,480个float32的〜= 229.9 MB的数据。第二个列表包含12,342,966,272 uint8的〜= 1,471.3MB数据。

所以,一切似乎都在检查。除了我得到内存错误的部分。我绝对有更多的内存,它崩溃的文件大约是800KB,所以它不会在读取一个巨大的文件时失败。

此外,该文件未损坏。如果我事先没有耗尽所有的记忆,我可以读得很好。

为了让事情变得更加混乱,所有这一切似乎在我的Linux机器上运行良好(虽然它确实有16GB的内存,而不是我的Windows机器上的8GB),但是,它似乎并不是机器的RAM。造成这个问题。

为什么Python会抛出内存错误,当我预计它应该能够分配另外2GB的数据?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值