1

それで、私は地下室でこのくだらない古いラップトップ(私の姉妹は2005年頃に引っ越したもの)を見つけ、Pythonで膨大な計算を実行し、何時間も放置することでそれをいじっていました。私の最新のプロジェクトでは、最初の 10 億個の素数をテキスト ファイルに保存しています (意味がないことはわかっていますが、多少興味深いことです)。これまでのコードは次のとおりです。

from time import time
start_time = time()
f = open('primes.txt', 'w')
counter = 1
number = 1
while counter <= 1000000000:
    if prime(number): #NOTE: prime is a function checking if a number is prime
        f.write(str(counter) + '   ' + str(number) + '\n')
        counter += 1
    number += 1

f.write(time() - start_time)
f.write('This file contains the first %s primes.' % (counter)) 

f.close

私が持っている問題は最後にあります。10 億個の素数は非常に長いテキスト ファイルであるため、時間と素数をファイルの最後ではなく最初の行に記載する必要があります。時間と素数の両方が0になるため、素数が計算/書き込まれる前に書き込むことはできません。

計算と書き込みが完了した後、情報をファイルの先頭 (最初の行) に挿入する方法はありますか?

解決しました!最初に空白を追加してから f.seek(0) を使用すると、完全に機能しました。プログラムに関しては、最初の 1 億は約 3 日で完了しました。明らかに最も効率的なプログラムではありませんが、わずか 800 MHz の 1 つのコアでしか実行されていません。

4

2 に答える 2

3

ファイルの先頭に空白を書くことができます

f.write(" "*30)

そして、計算が終わったら、最初に戻ってこの空白を上書きします。

f.seek(0)
f.write(str(counter)+" primes")
于 2012-12-17T12:13:46.480 に答える
-1

短い答え: ありえない

長い答え: データを別の場所で収集し、ヘッダーを新しいファイルに書き込み、収集したデータをヘッダーの後にコピー/追加する必要があります。

于 2012-12-17T12:11:57.527 に答える