我的计算机使用以下代码崩溃:
{{1}}
输出是正确的,但是当他达到6个字符时,计算机开始非常慢并且崩溃。我无法理解这种缓慢而崩溃的原因。在第一眼看,我会说是因为内存,但我有12GB的内存,我的电脑不能保存数据。
为什么电脑会崩溃?
电脑规格: 处理器:i7-5500u 2.4-3.00 Ghz 拉姆:12 磁盘:120 SDD + 1T 图:r7 m260
答案 0 :(得分:5)
此
for x in list(itertools.permutations(list_Abecedario, i)):
会在内存中存储所有可能的排列(并且可能有很多),所以是的,您的计算机 “将数据保存在某处。 FWIW列出这些排列仅迭代这个列表完全违背了itertools的全部要点,即使用延迟迭代(因此节省内存)。所以这里的解决方案很简单:只需迭代itertools.permutations
:
for x in itertools.permutations(list_Abecedario, i):
编辑:请注意,考虑到大量的排列,即使你没有达到另一个内存限制,你的程序也会花费非常的时间来完成。
答案 1 :(得分:2)
您正在计算所有可能的6个元素排列,从所有可能的字母开始。这给您的处理器带来了很大的压力。程序的缓慢部分是
itertools.permutations(list_Abecedario, i)
使用6个元素,使用字母表,总排列数为165&#3965' 600。我只用formula获得了这个数字,你的电脑实际上需要通过每次将元素放在一起来计算每个可能的排列。