nsarray 释放_通过删除numpy数组释放内存

博主在编写疲劳分析程序时遇到内存问题,程序读取并分析大量的numpy数组。尝试在循环结束时删除不再需要的数组并调用gc.collect(),但未能有效释放内存。询问是否有类似MatLab 'pack'功能的解决方案,可以将工作区数据写入磁盘并在每个循环结束后重新加载。
摘要由CSDN通过智能技术生成

我用GUI编写了一个疲劳分析程序。该程序为有限元模型的每个单元获取单元荷载的应变信息,使用np.genfromtxt('loadcasefilename.txt'然后进行一些疲劳分析,并将每个元素的结果保存到另一个数组中。在

负载情况大约32Mb作为文本文件,大约有40个左右在一个循环中被读取和分析。每个元素的荷载是通过取荷载工况数组的切片来插值的。在

GUI和疲劳分析在不同的线程中运行。当您单击疲劳分析上的“开始”时,它将在疲劳分析中的荷载工况上启动循环。在

这让我想到了我的问题。如果我有很多元素,分析将无法完成。它多久退出取决于有多少元素,这让我觉得可能是内存问题。我尝试通过删除每个循环末尾的负载情况数组(在删除所有属于它的部分的数组之后)并运行gc.收集()但这并没有取得任何成功。在

在MatLab中,我使用'pack'函数将工作区写入磁盘,清除它,然后在每个循环结束时重新加载它。我知道这不是一个好的做法,但它会完成工作!我能用Python做同样的事情吗?在

代码如下:for LoadCaseNo in range(len(LoadCases[0]['LoadCaseLoops'])):#range(1):#xxx

#Get load case data

self.statustext.emit('Opening current load case file...')

LoadCaseFilePath=LoadCases[0]['LoadCasePaths'][LoadCaseNo][0]

#TK: load case paths may be different

try:

with open(LoadCaseFilePath):<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值