首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3睡眠()问题

Python3睡眠()问题
EN

Stack Overflow用户
提问于 2010-12-16 09:12:20
回答 2查看 22.8K关注 0票数 12

我在Python 3.1上写了一个简单的程序,我偶然发现了这个:

如果我在IDLE上运行这个命令,它就会像预期的那样工作--打印"Initializing.",然后添加两个点,每秒一个,等待输入。

代码语言:javascript
复制
from time import sleep

def initialize():
    print('Initializing.', end='')
    sleep(1)
    print(" .", end='')
    sleep(1)
    print(" .", end='')
    input()

initialize()

问题是当我双击.py来执行文件时,它在python.exe而不是pythonw.exe上运行,奇怪的事情发生了:它连接了所有的sleep()时间,即让我等待2秒,然后一次打印整个字符串Initializing. . .。这一切为什么要发生?有没有办法避免在终端中发生这种情况?如果我在windows和linux中都使用IDLE,它工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-16 09:17:45

这是因为输出被缓冲了。

您应该在每次写入后添加sys.stdout.flush()

票数 23
EN

Stack Overflow用户

发布于 2010-12-16 09:16:53

听起来不同之处在于stdout在空闲状态下会被自动刷新。为了提高效率,编程语言通常在写入屏幕之前保存大量的打印调用,这是一个缓慢的过程。

这里有另一个问题,它有您需要的答案:How to flush output of Python print?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4456581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档