我正在尝试将 0 到 1000000000 的数字列表作为字符串直接写入文本文件。我还希望每个数字都有前导零,最多十位数,例如,0000000000, 0000000001, 0000000002, 0000000003, ... n.
但是我发现这对我的口味来说太长了。
我可以使用seq
,但不支持前导零,我宁愿避免使用awk
和其他辅助工具来处理这些任务。我知道仅用 C 编写代码就能带来显着的加速收益,但我不想诉诸于此。我正在考虑将一些函数映射到一个大列表并循环执行它们,但是我只有 2GB 的可用 RAM,所以在处理我的问题时请记住这一点。
我正在使用Python-Progressbar,并且我得到了大约 2 小时的 ETA。如果有人能给我一些关于如何解决这个问题的建议,我将不胜感激:
pbar = ProgressBar(widgets=[Percentage(), Bar(), ' ', ETA(), ' ', FileTransferSpeed()], maxval=1000000000).start()
with open('numlistbegin','w') as numlist:
limit, nw, pu = 1000000000, numlist.write, pbar.update
for x in range(limit):
nw('%010d\n'%(x,))
pu(x)
pbar.finish()
编辑:所以我发现格式化(无论您使用什么编程语言)会产生大量开销。Seq
可以快速完成工作,但使用格式化选项 (-f) 会慢得多。但是,如果有人仍然想提供 python 解决方案,那将是最受欢迎的。