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

liftword2个月前 (03-20)技术文章36

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

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

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

Bash
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 的内存管理与垃圾回收

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

解锁 Python 中的内存效率:高级开发都在这样管理内存

#秋日生活打卡季#利用 del 和 gc.collect() 实现最佳性能你有没有遇到过 Python 程序运行得越来越慢?也许它消耗的内存超出了你的预期,却不知道原因。如果你有类似的经历,那你并不...

你的手机是不是经常提示存储空间不足?Python帮你清理重复文件

  最近我的手机经常提示存储空间不足,主要是微信和QQ群里接收的文件太多了,平时也没怎么整理。我把这些文件从手机里拷出来,打算整理一下,把该删的文件都删掉,把要备份的文件分门别类存到电脑或网盘上。我突...

详细介绍一下Python中的异常处理机制?

异常处理是在编程中为了避免因为错误而导致程序奔溃的情况,提高程序的健壮性而实现的一种错误保障机制。在Python中异常处理机制是通过try、except等关键字来实现,在编程过程中,可以将发生可能发生...