Why is the print function not running at the right time?
这是我的代码:
1 2 3 4 5 6 7 8
| import time as t
print('hello', end=' ')
t.sleep(1)
print('hello', end=' ')
t.sleep(1)
print('hello', end=' ')
t.sleep(1) |
我的问题是所有的打印命令都是在sleep命令之后执行的,这不是我想要的输出。
- 您要打印到哪里?我不能复制,但有一个缓冲区为stdout,很可能它没有得到冲洗。
- 我是说,你有没有把性病发到别的地方?这应该可以很好地打印到控制台上。
- 你的意思是需要三秒钟然后打印三次"你好"吗?因为它打印了三次"你好",中间有一秒钟的休息时间
- @Jonathandyke它最后都是为我打印的。
- 我刚在一本Jupyter笔记本上运行它,因为我打开了一本,我不知道这是否改变了什么。
- 在python 3中,print()有一个可选的flush参数。如果添加flush=True,print应立即打印。
- 密切相关:如何冲洗打印功能的输出?
这是因为输出缓冲。在打印换行符之前,不会刷新缓冲区。由于使用了end=' ',所以每个单词后面都没有换行符,所以缓冲区在脚本结束之前不会刷新。
您可以使用flush=True选项强制它立即冲洗。
1 2 3 4 5 6 7 8 9
| 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) |
- 不过,我不认为这样做会使人产生期望的行为。我可以很好地得到输出,并且在一条线路上按顺序构建
- @克里斯蒂安刚刚发现我自己,正要编辑
- "Barmar"。
- print('hello',end='')为什么这一个工作正常?新品在印刷品中的作用是什么??
- 因为您正在向输出缓冲区@mohamadmahdireisi写入新行,导致它被刷新。
- @当打印新行时,缓冲区被刷新。换行符是在数据中还是自动打印都不重要。
- 准确地说,它不一定是一个新线(
缺乏。如果要覆盖同一行,则回车(
也足以刷新缓冲区。