笔者在实际应用过程中,利用python解析交易数据,其中的方法是对文件夹进行遍历,然后根据里面的每个文件进行单独的解析,也就是用到了多层循环,结果导致内存占用越来越大,以至于最终内存满了而程序崩溃退出。
笔者查询了好多方法,包括直接使用gc进行内存回收, gc.collect()
但是还是不起作用。而很明显的一个现象就是程序人工中断退出之后,内存快速回收。
所以最终想了个办法就是使用python进行单独调用,具体方法如下:
import os
dataDir="d:/gjqmt/userdata_mini/datadir/SH/0/"
for root,dirs,files in os.walk(dataDir):
for i in len(dirs):
os.system("python parseHisDaily.py")
在上述代码中,每次使用os.system进行调用之后,都会自动进行内存资源的回收。
所以上面的解决办法也只能算是一种折中办法。
之前还看到一篇文章说的是利用 pympler进行查找内存泄漏的位置。但是因为笔者的程序调用了外部API,这个相对比较难查找,因此弃用。