pycharm 利用 memory_profile库监测程序内存使用情况

最近利用pycharm处理nc文件数据,由于nc文件的数据量过大,循环读取的话,会导致内存溢出,从而程序崩溃的情况。错误代码:
PyCharm 系统目录分区中的磁盘空间不足: C:\Users\Xp\AppData\Local\JetBrains\PyCharmCE2021.3
或者是
Unable to allocate xxx MiB for an array with shape (xxxx, xxxx)

根据网上教程,设定了内存虚拟空间,还是不行。
最后利用memory_profile 监测了每行代码占用内存空间的情况。发现就是nc文件读取后,内存使用大幅增加。
刚开始 使用close()关闭了文件,发现不行。又接着在使用变量,最后用del 删除了变量。发现还是不行。最后查明原因, 在使用del 删除变量前,应该避免对变量进行引用,否则 使用del 可能无法释放内存空间。另外,在不影响的情况,改进变量类型,降低内存使用空间。

我的部分代码如下:
@profile
def myfunc():
a = 0
for i in range(34405):
lat_value = data_excel[‘LAT_CORRECTED’][i]
lon_value = data_excel[‘LON_CORRECTED’][i]
lon_index = np.abs(lon - float(lon_value)).argmin()
lat_index = np.abs(lat - float(lat_value)).argmin()
year = data_excel[‘YEAR’][i]
month = data_excel[‘MONTH’][i]
print(month)
filename = file_path+“ct5km_dhw-max_v3.1_”+str(year)+str(month)+“.nc”
dhw1=nc.Dataset(filename)
dhw2= dhw1.variables[‘degree_heating_week’][:][:,lat_index,lon_index]
# dhw3 = dhw2
dhwlist.append((np.float32(dhw2))) (将dhw2改为float32类型)
a = a+1
print(a)
# del dhw1
dhw1.close() (关闭文件)
del dhw1.variables[‘degree_heating_week’]
del dhw2
gc.collect()

总结:
1、 利用 memory_profile 库查看程序内存使用情况 (具体教程网上有)
2、文件读取后,最后关闭文件
3、每次循环结束,使用del删除相关变量
4、改进变量类型,降低变量占用的内存空间
5、使用gc库的collect函数进一步释放内存空间

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值