我不知道这会有多高级,但是,我试图生成一个巨大的排列列表,然后解析它们,以一种特定的方式打印它们。THe的问题是,当我使用以下一行时:x=([''.join(i) for i in itertools.product("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",repeat=8)])
我遇到的问题是,我的计算机要么是32位,要么只有4G内存。因此,我想知道是否有一种方法可以在半程内停止这一行,将生成的所有内容写入txt文件,然后继续。这样就可以将变量存储在磁盘上,而不是存储在RAM中。然后,我将解析txt文件,以获得我正在寻找的情况。顺便说一下,我在Windows 7上。谢谢!
发布于 2014-01-18 01:21:12
只需将其分解为组件,并在运行时保存。类似于:
for i in itertools.product(string.ascii_letters + string.digits, repeat=8):
print(''.join(i))发布于 2014-01-18 01:22:01
首先要注意的是:
>>> len("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") ** 8
218340105584896L
>>> format(_, ",")
'218,340,105,584,896'这就是有多少产品。写出来后,每一个都需要8个字节加上一个换行符(或其他分隔符)。
>>> 62 ** 8 * 9
1965060950264064L因此,如果你购买大约2,000个1TB的磁盘,你就会有足够的磁盘空间来存储它们。
还想走这条路吗?-)一旦你买下所有的硬件:
import itertools
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
with open("perms.txt", "w") as f:
for i in itertools.product(s, repeat=8):
f.write("".join(i) + "\n")只需要很少的内存就能完成任务。
https://stackoverflow.com/questions/21198784
复制相似问题