请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5558|回复: 4

[作图] NCL输出txt释放内存的问题

[复制链接]

新浪微博达人勋

发表于 2017-4-28 16:18:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请问现在我需要读取53个文件,然后在中国范围内每个点出一个txt,也就是10000多个txt,但是内存严重不足,运行一段时间就被守护进程kill了,有什么办法可以每次写入一次txt就关闭一次txt来释放内存吗?我没有找到关闭write_table的命令
  1. ;*****************************************************
  2. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
  3. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
  4. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
  5. load "$WORKDIR/include/library.ncl"
  6. ;***************************************
  7. begin
  8. ; read data from grib file
  9. do j=0,240,3
  10. do point_lon1=74,154,1
  11.     point_lon=tofloat(point_lon1)/2
  12. do point_lat1=7,107,1
  13.     point_lat=tofloat(point_lat1)/2
  14.     if j.lt.10 then
  15.         worktime="00"+tostring(j)
  16.     else if j .ge.10 .and. j .lt.100 then
  17.         worktime="0"+tostring(j)
  18.     else
  19.         worktime=tostring(j)
  20.     end if
  21.     end if
  22.     inputpath = getArgsPara(params,"src")+worktime+".grib2"
  23.     outputpath=getArgsPara(params,"OUTPUTDIR")
  24.     filePart=str_split(outputpath,"/")
  25.     fileName=filePart(dimsizes(filePart)-1)
  26.     checkOrCreateDir(outputpath)
  27.     header = (/"经度:"+point_lon+","+"纬度:"+point_lat,"起报时间:"+fileName+"08", \
  28.               "时效            风速 "/)
  29.     hlist=[/header/]
  30.     if(toint(worktime).eq.0)then
  31.         write_table(outputpath+"/wind_"+point_lon+"_"+point_lat+".txt","w",hlist,"%s")
  32.     end if     
  33.     U = vars->UGRD_P0_L103_GLL0(0,:,:)
  34.     V = vars->VGRD_P0_L103_GLL0(0,:,:)
  35.     lon = vars->lon_0
  36.     lat = vars->lat_0
  37.     longrid=(max(lon)-min(lon))/(dimsizes(lon)-1)
  38.     latgrid=(max(lat)-min(lat))/(dimsizes(lat)-1)
  39.     x_num=toint((point_lon-min(lon))/longrid)
  40.     y_num=toint((max(lat)-point_lat)/latgrid)
  41. ;==============================for wind=============================================
  42.    
  43.     wind=sqrt(U^2+V^2)
  44.     delete (U)
  45.     delete (V)
  46.     delete (lon)
  47.     delete (lat)
  48.     delete (vars)
  49.     delete (inputpath)
  50.     alist=[/worktime,wind(y_num,x_num)/]
  51.     write_table(outputpath+"/wind_"+point_lon+"_"+point_lat+".txt","a",alist,"%3.3s%15.4f")
  52.     ;destroy(write_table)
  53.     ; cmd00="su"
  54.     ; system(cmd00)
  55.     ; cmd000="123456"
  56.     ; system(cmd000)
  57.     ; cmd0="/proc/sys/vm/drop_caches"
  58.     ; system(cmd0)
  59. end do
  60. end do
  61. end do
  62. end
复制代码


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-28 16:36:27 | 显示全部楼层
write之后delete掉alist可以吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-4-28 16:49:48 | 显示全部楼层
lsd1984 发表于 2017-4-28 16:36
write之后delete掉alist可以吗

并没有很明显的作用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-28 17:08:20 | 显示全部楼层
zxholystar 发表于 2017-4-28 16:49
并没有很明显的作用

那只能辛苦点J的循环分几次做了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-5-5 10:24:14 | 显示全部楼层
lsd1984 发表于 2017-4-28 17:08
那只能辛苦点J的循环分几次做了

分几次也就算了,问题是要分几百次。。。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表