Numpy:运行 在一台机器上内存不足,而在另一台机器上完成相同的任务
Numpy: running out of memory on one machine while accomplishing the same task on another
对于我的项目,我需要同时在内存中存储两个大数组。我尝试按如下方式创建它们:
matrix_for_words_train = numpy.zeros(shape=(435679, 542))
matrix_for_words_test = numpy.zeros(shape=(435679, 542))
但是,在我的台式电脑上,第二个字符串的结果是 MemoryError
。当我尝试在笔记本电脑上执行此操作时,我成功了。令我困惑的是台式机的内存是笔记本电脑的两倍(8 GB 对 4 GB)。 Ubuntu 上的两台机器 运行,台式机有 12.04,而笔记本电脑有 14.04(均为 32 位),在两台机器上我都尝试使用 python 2.7
执行上面的脚本
以防万一我用 free
检查了可用内存,它似乎没问题(总内存按预期显示,桌面有两倍以上的可用内存)。我想我在这里完全遗漏了一些东西。
提前致谢!
如果两台计算机都是 32 位的,它们实际上都是 4 GB RAM(除非你做了奇怪的事情来解决它,比如启用 PAE)。
32 位操作系统通常无法处理超过 4 GB 的 RAM。
此外,操作系统不仅在整个系统几乎没有可用内存时,而且在它决定不能为这个特定进程分配更多内存时,都会抛出内存不足异常。
此外,请注意数组需要一个连续的内存片段。因此,即使 OS 可以找到足够的空闲内存,它也可能无法在一个连续的片段中找到此数量的空闲内存。甚至有可能整个系统中没有 0.5 GB RAM 的连续片段。
一定要用数组吗?你能以不同的方式实施你的解决方案吗?如果是这样,我会推荐。你想做什么?
无论如何,内存不足异常在程序员看来通常不是那么确定。您甚至可能不会在同一天在同一台 PC 上获得相同的结果。
对于我的项目,我需要同时在内存中存储两个大数组。我尝试按如下方式创建它们:
matrix_for_words_train = numpy.zeros(shape=(435679, 542))
matrix_for_words_test = numpy.zeros(shape=(435679, 542))
但是,在我的台式电脑上,第二个字符串的结果是 MemoryError
。当我尝试在笔记本电脑上执行此操作时,我成功了。令我困惑的是台式机的内存是笔记本电脑的两倍(8 GB 对 4 GB)。 Ubuntu 上的两台机器 运行,台式机有 12.04,而笔记本电脑有 14.04(均为 32 位),在两台机器上我都尝试使用 python 2.7
执行上面的脚本
以防万一我用 free
检查了可用内存,它似乎没问题(总内存按预期显示,桌面有两倍以上的可用内存)。我想我在这里完全遗漏了一些东西。
提前致谢!
如果两台计算机都是 32 位的,它们实际上都是 4 GB RAM(除非你做了奇怪的事情来解决它,比如启用 PAE)。
32 位操作系统通常无法处理超过 4 GB 的 RAM。
此外,操作系统不仅在整个系统几乎没有可用内存时,而且在它决定不能为这个特定进程分配更多内存时,都会抛出内存不足异常。
此外,请注意数组需要一个连续的内存片段。因此,即使 OS 可以找到足够的空闲内存,它也可能无法在一个连续的片段中找到此数量的空闲内存。甚至有可能整个系统中没有 0.5 GB RAM 的连续片段。
一定要用数组吗?你能以不同的方式实施你的解决方案吗?如果是这样,我会推荐。你想做什么?
无论如何,内存不足异常在程序员看来通常不是那么确定。您甚至可能不会在同一天在同一台 PC 上获得相同的结果。