我写了一个Python程序,它作用于一个大的输入文件,创建了几百万个表示三角形的对象.算法是:
在打印三角形之前打印出完整的顶点列表的OFF的要求意味着在将输出写入文件之前我必须在内存中保存三角形列表.与此同时,由于列表的大小,我遇到了内存错误.
告诉Python我不再需要某些数据的最佳方法是什么,它可以被释放?
我只有两个句子我想产生变化并计算 leveshtein 距离,但是当我尝试使用 itertools 产生这个列表时,即使我的 64GB RAM 机器也会超载。
有没有办法限制这一点,即使我必须将其限制为一定数量的组合。
到目前为止,这是我的代码:
from __future__ import print_function
import itertools
import sys
in_file = sys.argv[1]
X = []
with open(in_file) as f:
lis = list(f)
X.append([' '.join(x) for x in itertools.product(*map(set, zip(*map(str.split, lis))))])
for x in X:
print x
Run Code Online (Sandbox Code Playgroud) 我正在尝试获得多个数组的笛卡尔积,但数组非常大,我正在尝试优化内存使用。我尝试使用下面的代码实现一个生成器,但它只是返回在某个位置有一个生成器。
import itertools
x = [[1,2],[3,4]]
def iter_tools(*array):
yield list(itertools.product(*array))
print(iter_tools(*x))
Run Code Online (Sandbox Code Playgroud)
当我尝试相同的代码但用return而不是yield它工作正常时。如何通过实现生成器来获得笛卡尔积?