为啥打印功能没有在正确的时间运行? [复制]
Posted
技术标签:
【中文标题】为啥打印功能没有在正确的时间运行? [复制]【英文标题】:Why is the print function not running at the right time? [duplicate]为什么打印功能没有在正确的时间运行? [复制] 【发布时间】:2019-08-05 20:23:20 【问题描述】:这是我的代码:
import time as t
print('hello', end=' ')
t.sleep(1)
print('hello', end=' ')
t.sleep(1)
print('hello', end=' ')
t.sleep(1)
我的问题是所有的打印命令都是在睡眠命令之后执行的,这不是我想要的输出。
【问题讨论】:
您要打印到哪里?我无法重现,但stdout
有一个缓冲区,并且可能没有被刷新。
我的意思是,你有没有将标准输出指向某个地方?这应该可以很好地打印到控制台。
你的意思是需要三秒钟然后打印三遍hello?因为它打印了 hello 三次,中间有 1 秒钟的休息时间
Python 3 中print()
有一个可选的flush
参数。如果添加flush=True
,print
应该会立即打印。
密切相关:How to flush output of print function?
【参考方案1】:
这是因为输出缓冲。在打印换行符之前不会刷新缓冲区。由于您使用了end=' '
,因此每个单词后面都没有换行符,因此在脚本结束之前不会刷新缓冲区。
您可以使用flush=True
选项强制它立即刷新。
import time as t
import sys
print('hello', end=' ', flush=True)
t.sleep(1)
print('hello', end=' ', flush=True)
t.sleep(1)
print('hello', end=' ', flush=True)
t.sleep(1)
【讨论】:
这不会给出想要的行为,我不认为。我可以在单行上按顺序构建输出很好 @ChristianDean 刚刚发现自己,要编辑了 抓住@Barmar。 print('hello\n', end=' ') 为什么这个工作正确?新行在印刷品中有什么作用?? 因为您正在向输出缓冲区@mohamadmahdireisi 写入换行符,导致它被刷新。以上是关于为啥打印功能没有在正确的时间运行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章