Python不会解压缩打印语句
作者:互联网
我有以下程序:
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)
当找到大量的素数(比如一万个)时,我希望通过查看输出能够看到程序的距离.所以我决定打印每十个素数.但是,当打印出来时,它会一直等到程序的最后才打印出来.我在print语句后面添加了sys.stdout.flush(),但它没有任何区别.然后我尝试使用python -u<文件名>运行脚本.而且,完全没有区别.
这是我得到的输出:
Running
starting sieve
sieve array filled
然后大约一分钟后,其余的输出立即显示出来.
为什么我不能关闭缓冲区?我试图尽可能少地修改代码.
解决方法:
测试了一些东西之后,我不确定你的问题实际上是输出缓冲,它只是算法的行为.尝试在while循环顶部附近打印电流,你会发现早期的数字需要很长时间才能完成,然后随着数字变得越来越短,每个新的当前值都会更快地处理开始看到素数弹出.
尝试:
while len(numbers) > 0:
current = numbers[0]
print current
primes.append(current)
numbers.remove(current)
标签:output-buffering,python 来源: https://codeday.me/bug/20190901/1783821.html