在 Ubuntu 18 上创建具有“uint8”数据类型的大型 NumPy 数组时,您可能会遇到以下问题:遇到错误:
numpy.core._exceptions.MemoryError: Unable to allocate array with shape and data type uint8
尽管系统有足够的可用内存,但在 MacOS 上没有遇到相同的问题。
此问题的根本原因是操作系统的过量使用处理模式。默认情况下,过度使用是禁用的,这意味着内核将拒绝超出可用内存的分配。
要解决此问题:
启用积极过量使用后,即使超出物理内存,系统也允许分配。这是因为内核预计只有一小部分分配的内存会被主动使用。
虽然积极的过量使用可以解决分配问题,但应谨慎使用:
启用积极过度使用,以下代码应该工作:
import numpy as np a = np.zeros((156816, 36, 53806), dtype='uint8') print(a.nbytes) # Output: 303755101056
以上是为什么我无法在 Ubuntu 上创建大型 NumPy 数组,以及如何修复内存分配错误?的详细内容。更多信息请关注PHP中文网其他相关文章!