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

liftword4个月前 (03-20)技术文章56

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

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

喂!你这个python的内存是不是爆了?喏,拿这个去测试一下看看

你是否曾经为python程序的内存占用问题头疼不已?是否觉得内存泄漏、对象占用过多内存等问题难以排查?别急,今天我要介绍一个神器——pympler,让你轻松搞定python内存分析!01什么是pymp...

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

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

Python性能优化: 探索提高Python代码性能的技术

Python是一门强大而灵活的编程语言,但在处理大规模数据和性能要求严苛的场景下,性能优化显得尤为重要。本教程将带你探索提高Python代码性能的技术,包括使用生成器、列表推导式等减少内存占用,以及通...

Python 中如何进行内存优化

在 Python 中进行内存优化可以帮助减少程序的内存占用,提高性能。以下是一些常见的内存优化技巧:使用生成器表达式和生成器函数: 如果你需要处理大量的数据集合,尤其是需要一次性加载到内存中的数据,可...

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

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