我知道对象 refguess 变成 95^n 个字符长,这就是存储在内存中的内容。是否可以一次将一个元素加载并迭代到内存中,在加载新元素之前将其擦除?最终,我想将它移植到 GPU 上运行,以利用着色器核心的卓越数字处理能力,因此较小的 RAM 占用空间将是最佳选择。
import itertools
import string
i = 1
refguess = ''
password = ' ~}}'
charlist = list(string.printable)
charlist = charlist[1:95]
while refguess != password:
i += 1
for idx, val in enumerate(list(itertools.product(charlist,repeat=i))):
refguess = ''.join(map(str,val))
if refguess == password:
print('Password is ' + '(' + refguess + ')')
break