编程语言
首页 > 编程语言> > Python不会解压缩打印语句

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