我用Python为自己编写了一个小程序,帮助我从一组不同的数字和单词中生成密码的所有组合,我知道要恢复忘记的密码,因为我知道我使用的所有不同的单词和数字集,我只想生成所有可能的组合,唯一的问题是这个列表似乎持续了好几个小时,所以最终我的内存用完了,而且没有完成。
我被告知它需要抛开我的记忆,这样才能继续下去,但我不确定这是否正确。我有办法解决这个问题吗?
这是我正在运行的程序:
#!/usr/bin/python
import itertools
gfname = "name"
tendig = "1234567890"
sixteendig = "1111111111111111"
housenum = "99"
Characterset1 = "&&&&"
Characterset2 = "££££"
daughternam = "dname"
daughtyear = "1900"
phonenum1 = "055522233"
phonenum2 = "3333333"
mylist = [gfname, tendig, sixteendig, housenum, Characterset1,
Characterset2, daughternam, daughtyear, phonenum1, phonenum2]
for length in range(1, len(mylist)+1):
for item in itertools.permutations(mylist, length):
print "".join(item)
我已经拿出了几套,并改变了数字和文字明显的原因,但这是大致的程序。
另一件事是我可能遗漏了一个特定的单词,但我不想把它放在列表中,因为我知道它可能在所有生成的密码之前,有人知道如何在我的程序中添加前缀。
很抱歉语法不好,谢谢你的帮助。
我使用
guppy
来了解内存使用情况,我稍微更改了操作代码(标记为“!!!”)每次调用
h.heap()
时,Guppy都会输出类似的内容。运行
python code.py > code.log
,显示fgrep Partition code.log
。我相信这表明内存占用保持相当一致。
当然,我可能误解了
guppy
的结果。尽管在我的测试中,我故意在列表中添加了一个新的字符串,以查看对象计数是否增加了。对于那些感兴趣的人,我不得不在OSX上安装guppy-Mountain Lion
pip install https://guppy-pe.svn.sourceforge.net/svnroot/guppy-pe/trunk/guppy
总之,我不认为这是内存不足的问题,尽管我们没有使用完整的操作数据集。
正如你现在所知道的,你的程序本身运行起来会相当有效率。但要确保你不只是在空闲状态下运行它,例如,当空闲状态用越来越多的行更新屏幕时,这会使它慢下来,进入爬行状态。将输出直接保存到文件中。
更妙的是:你有没有想过当你有密码的时候会怎么做?如果可以从命令行登录到丢失的帐户,请尝试立即登录,而不要存储所有密码供以后使用:
使用IronPython和Visual Studio作为调试工具(它们非常好)怎么样?您应该能够暂停执行并查看内存(本质上是内存转储)。
相关问题 更多 >
编程相关推荐