私は次のプログラムを持っています:
def main():
print "Running"
primes = sieve(100000)
print "Sieve is done"
def sieve(n):
print "starting sieve"
primes = []
times = 0
numbers = range(2, n):
print "sieve array filled"
while len(numbers) > 0:
current = numbers[0]
primes.append(current)
numbers.remove(current)
times = times + 1
if (times % 10 == 0):
print str(times) + "th prime is " + str(current)
# Remove every multiple
for i in numbers:
if (i % current == 0):
numbers.remove(i)
多数(たとえば1万)までのすべての素数を見つけるとき、出力を見て、プログラムがどれだけ進んでいるかを確認できるようにしたかったのです。そこで、10プライムごとに印刷することにしました。ただし、印刷する場合は、プログラムの最後まで待機して印刷します。印刷ステートメントの直後に追加しましたsys.stdout.flush()
が、違いはありませんでした。次に、スクリプトを実行してみましたpython -u <file name>
が、まったく違いはありませんでした。
これは私が出力として得るものです:
Running
starting sieve
sieve array filled
次に、約1分後、残りの出力が一度に表示されます。
バッファをオフにできないのはなぜですか?コードをできるだけ変更しないようにしています。