Python报内存不足问题的一种可能

liftword4周前 (03-20)技术文章14

Python做数据处理效率很高,尤其是在解决一些小问题时候,但是有时候一些莫名奇妙的错误的确让人很烦。本文记录一个这样的小问题。

前段时间,我在一台新的Windows机器上使用Python做数据处理的时候遇到了一个非常奇怪的问题,就是尽管本机是16GB的内存,但是依然无法处理较大的数据,数据量一旦超过一定阈值,就会报内存不足。一开始我也很奇怪为什么会这样,通过任务管理器的性能监控可以看到Python程序一旦开始运行,内存开始上涨到接近2GB的时候就会崩溃,报错。

我用的是NumPy读取数据,错误如下:

Traceback (most recent call last):
File "", line 1, in 
File "mtrand.pyx", line 745, in numpy.random.mtrand.RandomState.randint
File "_bounded_integers.pyx", line 1355, in numpy.random._bounded_integers._rand_int32
ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.

我当时非常奇怪。经过一个多小时的排查才发现我的Python版本安装有错,我装的是32位的Python,在64位的系统中运行32位的程序是无法使用较大的内存的。在Windows系统中,64位系统环境下,32位进程是无法获取超过2GB的内存的。因此,尽管我的机器本身内存足够,但依然出现了内存溢出的问题。

这是一个很小的问题,有经验的程序员可能一眼能看出问题所在。但本人的确第一次在Python中遇到,因此记录一下,也方便以后排错。

相关文章

分享一个文件整理使用Python小脚本(删除相同文件减小内存占用)

写在前面:脚本作用:在目标文件夹中筛选出大小相同的文件,并打印在屏幕上,这样可以快速找出相同文件,释放硬盘内存。前期部署:安装python并做好配置环境变量(基础)先上代码:import osfrom...

python如何进行内存管理

关于首先python进行内存管理就不得不提到Python解释器在何种情况下会释放变量的内存。Python引用了内存计数这一简单的计数来控制。当一个变量的引用计数为0的时候,就会被解释器回收。当然在交互...

一文读懂 Python 的内存管理

Python 是一种高级编程语言,以其简单性和可读性而闻名。它的主要功能之一是自动内存管理,这对开发人员来说至关重要,因为它抽象了手动内存分配和释放的复杂性。本文旨在深入了解 Python 的内存管...

一文掌握Python内存管理

Python中的内存是由Python内存管理器(Python memory manager)来管理的,它涉及到一个包含所有Python对象和数据结构的私有堆(heap)。Python内存管理器有不同的...

Python 的内存管理与垃圾回收

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者| 慕课网精英讲师 朱广蔚1. 内存管理概述1.1 手动内存管理在计算机发展的早期,编程语言提供了手动内存管理的机制,例如...

面试必备:Python内存管理机制(建议收藏)

什么是内存管理器(what)Python作为一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,与大多数编程语言不同,Python中的变量无需事先申明,变量无需指定类型,程序员无需关心内存管...