python循环中释放内存的方法_Python如何在循环状态下释放内存?

试着把程序拆开执行,中间结果先保存,然后合并再执行下一步。

~~~~~~~~~~~~

这是你的原来的代码

for x in range(len(innerlayerlist)):

for k in range(len(blocknumlist)):

for i in range(len(batchsizelist)):

TrainList = []

TestList = []

TrainList,TestList = core(curseedlist,trainData,TrainList,TestList,\

batchsizelist[i],blocknumlist[k],innerlayerlist[x])

f=open(txtName, "a+")

f.write(str(TrainList)+'\n'+str(TestList)+'\n\n')

f.close()

del TrainList

del TestList

del f

你把最内核的部分:

TrainList = []

TestList = []

TrainList,TestList = core(curseedlist,trainData,TrainList,TestList,\

batchsizelist[i],blocknumlist[k],innerlayerlist[x])

f=open(txtName, "a+")

f.write(str(TrainList)+'\n'+str(TestList)+'\n\n')

f.close()

del TrainList

del TestList

del f

做成个单独的python函数。

前面加上命令行传参代码,入口参数就是batchsizelist[i],blocknumlist[k],innerlayerlist[x]具体的值。

你这个core函数看起来设计的不是很好:

curseedlist,trainData 这两个看起来永远不变,每次传进去没必要

,TrainList,TestList 这两个初值永远是 [],也没必要传进去

这两点可以优化下。

然后原来的程序改为多进程程序,我随便搜了个参考代码

(没错,我啥也记不住,整天抄代码,也抄自己的):

from multiprocessing import Process

import os

# 子进程要执行的代码

def run_proc(name):

print 'Run child process %s (%s)...' % (name, os.getpid())

if __name__=='__main__':

print 'Parent process %s.' % os.getpid()

p = Process(target=run_proc, args=('test',))

print 'Process will start.'

p.start()

p.join()

print 'Process end.'

启动的子进程类似这样:

def run_proc(name):

print 'Run child process %s (%s)...' % (name, os.getpid())

这样你的核心函数就是个单独进程执行,不断创建,销毁,不用管它怎么处理内存了。

效率肯定低一些,但能执行。

如果你的算法允许并行,可以把写文件改为写数据库,多个进程并发。

具体代码你应该能完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值