python - numpy.memmap 在有足够的可用内存时返回不足的内存
问题描述
在 64 位 Windows 机器上的典型调用期间numpy.memmap()
,python 引发以下错误:
OSError: [WinError 8] Not enough memory resources are available to process this command
不同的 Windows 机器使用不同的文本引发相同的错误:
OSError: [WinError 8] Not enough storage is available to process this command.
这是代码摘要:
with open(infile, 'rb') as f:
......
array = numpy.memmap(f, dtype='uint8', mode='r', offset=offset, shape=arraysize).tolist()
此时 Python 只使用了 50MB 的内存。内存不足的原因是什么?
解决方案
事实证明,这里的问题是 memmap 调用中的offset
+shape
大于文件的总大小(即我试图读取超出文件大小的内容)。
在这种情况下,有关内存资源的错误消息有点误导。
推荐阅读
- terraform - 具有嵌套资源的 Terraform for_each
- java - 使用以下代码在删除调用中获取 LockAcquisitionException 异常
- python - Py列表没有给出预期的结果
- c# - 使用 AppDomain 加载程序集时出现 FileNotFoundException
- java - 使用 Java JNDI 类从 Active Directory 匿名获取 RootDSE
- kubernetes - 为什么我的 TCP Istio EnvoyFilter 不工作?
- javascript - 从中等内容结果访问对象值
- arduino - BSEC 库 Arduino 的问题
- python - 如何创建直接改变变量而不返回任何内容的方法?
- json - 过滤 JSON - 获取非空值