与pandas、bokeh和Python 2.7结合使用时的内存错误

0 投票
1 回答
566 浏览
提问于 2025-04-18 13:48

我有一个大约100MB的csv文件。我的内存很充足,大约有8GB。在运行时,我最多大概会有10个pandas.DataFrames,这些数据框里包含了整个csv文件的数据。所以我觉得最多也就需要2GB的内存。用getsizeof(dataframe)查看内存占用,也没有返回很大的数字。然后在一个函数里,我做了以下操作:找出一个有趣的值,比如说电机电流的异常值。接着我用bokeh在图表上绘制这个点周围的10秒钟的数据(大约300个数据点),还要绘制另外4个图表,显示电机电压、电机速度等等。这个函数在一个循环里绘制了大约50个图表,都是用同样的方法。变量都是在函数内部定义的,所以每次循环都会被覆盖。现在最大的问题是:为什么我的内存在每次循环中都在增加?有时候它会达到大约7GB,然后我就会遇到内存错误。我看不出我的数据在内部是怎么变得那么大的。即使是10MB的csv文件,内存问题也会出现。

1 个回答

0

在Python中,即使一个函数结束了,它所使用的内存也不会被释放。就算你使用了del variablename,内存也不会被释放。

但是,下面这个方法就能解决这个问题:

import gc

gc.collect()

撰写回答