我目前正在使用一个枚举特定数组(一个有向图)中的所有循环的函数,我需要它们全部。此函数以列表列表的形式返回所有循环(每个子列表是一个循环,例如,result = [[0,1,0],[0,1,2,0]]是一个包含2个以节点开头和结尾的循环的列表) 0)。但是,有数百万个循环,因此对于大图,我会遇到内存错误(MemoryError:MemoryError()),因为包含所有循环的列表列表太大。我希望函数将结果分成几个数组,这样就不会出现内存错误。那可能吗?并能解决问题吗?我试图通过将结果数组拆分为子结果列表来做到这一点(子结果的最大大小为1000万,这比此处说明的5亿最大大小还小:Python数组可以得到多大?) 。这个想法是结果是一个包含子结果的列表:result = [sub-result1,sub-result2]。但是,我得到了另一个内存错误:新解析器没有内存。我这样做的方式如下:if SplitResult == False: result = [] # list to accumulate the circuits found # append cycles to the result list if cycle_found(): #cycle_found() just for example result.append(new_cycle)elif SplitResult == True: result = [[]] # list of lists to accumulate the circuits found # append cycles to the LAST result SUB-lists if cycle_found(): #cycle_found() just for example result[len(result)-1].append(new_cycle) # create a new sublist when the size of the LAST result SUB-lists # reaches the size limit (ResultSize) if len(result[len(result)-1]) == ResultSize: result.append([])也许问题是我将所有子结果合并到结果列表中。在那种情况下,如何从函数返回可变数量的结果?特别是,我将一个12节点完整有向图的所有简单周期划分为1000万个周期的子列表。我知道总共有115,443,382个周期,所以我应该得到一个包含16个子列表的列表,前15个包含1000万个周期,最后一个包含443,382个周期。取而代之的是,我得到了另一个内存错误:新解析器没有内存。此过程适用于11个节点的完整图,该图返回2个子列表,第一个包含1000万个循环(10000000),另一个包含976184。如果有帮助,它们的内存占用量为>>> sys.getsizeof(cycles_list[0])40764028>>> sys.getsizeof(cycles_list[1])4348732然后,我想我们应该添加列出的每个循环的大小:>>> sys.getsizeof(cycles_list[0][4])56>>> cycles_list[0][4][0, 1, 2, 3, 4, 0]任何帮助将是最欢迎的,
添加回答
举报
0/150
提交
取消