龙空技术网

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

数据学习DataLearner 144

前言:

此时咱们对“python64位和32位区别”大体比较关心,咱们都想要知道一些“python64位和32位区别”的相关文章。那么小编同时在网络上搜集了一些关于“python64位和32位区别””的相关内容,希望朋友们能喜欢,同学们快快来学习一下吧!

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

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

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

Traceback (most recent call last):File "<stdin>", line 1, in <module>File "mtrand.pyx", line 745, in numpy.random.mtrand.RandomState.randintFile "_bounded_integers.pyx", line 1355, in numpy.random._bounded_integers._rand_int32ValueError: 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中遇到,因此记录一下,也方便以后排错。

标签: #python64位和32位区别