我有以下程序:
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)
当找到一个大数的所有素数(比如说一万个)时,我希望能够通过查看输出来了解程序有多远。所以我决定每十个素数打印一次。但是,当打印出来时,它会等到程序的最后才打印它。我在sys.stdout.flush()
打印语句之后立即添加,但没有任何区别。然后我尝试运行脚本,python -u <file name>
但仍然没有任何区别。
这就是我得到的输出:
Running
starting sieve
sieve array filled
然后大约一分钟后,立即显示其余的输出。
为什么我不能关闭缓冲区?我正在尝试尽可能少地修改代码。