我用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):<