我正在使用itertools模块为一个相当长的句子中的字母顺序创建一个可能的排列列表。然而,每次我这么做,我就会耗尽内存(在别人问我之前,我有16GB的内存)。在
我没有这台机器上的代码,但是它并不是低效的代码,因为它是文档中某个示例的复写本,Python试图一次完成太多的置换。在
问题是,有没有一种方法可以限制Python使用的内存量,比如给它一个池?我知道我可能应该更改代码,但我也可以从其他项目的内存池中获益。在
我不能使用Theano模块,因为我正在使用Conda,这是不兼容的。我尝试过gc模块,但效果不大,代码还是一个例子,句子大约有十几个字符,在屏幕上打印列表。在
编辑:
这是我代码的主要部分。我不建议运行它,因为它会导致我的机器崩溃。在import itertools
f = open('File.txt','w')
for key, value in dict.items():
print(list(itertools.permutations((str(counter-value)))),file=f)
dict变量是一个76个元素的字典,包含代码检查的不同字符。代码的实际功能很复杂,可以放入大约100行的脚本中,但这正是我遇到问题的地方。如果代码有效,它应该是计算字面上数百万排列。我的问题是它试图一次完成所有任务。我想知道是否有什么方法可以限制它,即使这意味着代码运行速度会变慢。在