0 から 1000000000 までの数字のリストを文字列としてテキスト ファイルに直接書き込もうとしています。また、各数値の先頭に 10 桁までのゼロを付けたいと思います。たとえば、0000000000, 0000000001, 0000000002, 0000000003, ... n.
時間がかかりすぎていることがわかりました。
を使用できますが、先行ゼロはサポートされていないため、これらのタスクを処理するために およびその他の補助ツールをseq
使用することは避けたいと考えています。awk
これを C でコーディングするだけで劇的なスピードアップのメリットがあることは認識していますが、それに頼りたくありません。いくつかの関数を大きなリストにマッピングしてループで実行することを検討していましたが、使用できる RAM は 2GB しかないため、問題に取り組む際はこの点に留意してください。
私は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 ソリューションを提供したい場合は、大歓迎です。