我用Python编写了以下程序(处理一个1000字的文本文件并查找所有4个单词的排列),并在Mac终端上运行它:
from itertools import permutations
with open('wordlist.txt') as f:
content = f.readlines()
content = [x.rstrip() for x in content]
g = open("finalwordlist.txt", "a")
g.write('%s' % "\n".join(map("".join, permutations(content,4))))
过了一会儿,我从终端得到了以下输出:
Killed: 9
没有将输出写入输出文本文件,因此我假设程序在写()步骤之前终止。
当我发现小于4(例如)的排列时,这个程序起了作用。1,2,3)。死者:9是因为所有排列的大小吗?或者和Mac终端环境有关?
我怎样才能避免这个错误呢?谢谢!
发布于 2020-06-20 19:41:17
让我们看看..。您已经生成了一个Python对象,每个对象大约有1000^4个排列,每个排列有4个单词。平均用词长度约为4.5个字母,但一个词汇的平均长度更长--我会尝试一下,每个排列超过25个字符。这将给出对象中的2.5 * 10^13字节。
您的RAM分配如何处理一个250 of的字符串?如果你忘记了你的记忆限制,错误信息是什么?
是的,这是Mac环境的一个问题: SegFault不是错误消息。您的系统似乎崩溃得如此严重,以至于它再也没有回过头来发出Python内存错误。
顺便说一下,修复是“明显的”我希望,输出差异化中没有什么需要块写的。相反,一次只写一个。
for combo in permutations(content,4):
g.write("".join(combo) + "\n")
https://stackoverflow.com/questions/62490664
复制相似问题