在下面的代码中,sleep( )是如何工作的?[重复]


from __future__ import print_function

import sys
from time import sleep

fp = sys.stdout
print('Do you want to continue (Y/n): ', end='')
# fp.flush()
sleep(5)

我不知道我问的问题是否正确。我发现许多类似的问题 StackOverflow 但没有一个是有用的–他们缺乏细节。为什么 印制 后的作品 睡眠 在这种情况下执行?如果我取消对 fp.flush() 然后 印制 先工作。为什么会出现这种情况,即使在 印制 前有 睡眠?

解决方案:

问题中引用的代码展示了缓冲的效果。

首先,在 print 始终有效。

默认情况下,所有的输出都会进入一个缓冲区。这是一个优化。

如果你把writeeprint写到终端,当缓冲区包含一整行,即有一个换行符时,缓冲区会自动刷新(即数据被发送到设备)。注意 print 语句不会产生换行,所以输出不会像通常那样出现在屏幕上。

还有其他一些情况下缓冲区会被刷新:当缓冲区满了的时候,当文件设备被关闭的时候,当程序退出的时候(因为所有打开的描述符都被关闭了),当你用 flush 命令。程序显示了最后两个的效果,这取决于你如何注释或取消注释statememts。

给TA打赏
共{{data.count}}人
人已打赏
未分类

从另一个文件导入和更改变量

2022-9-23 13:23:29

未分类

如何使用 "docker volume prune"?(`docker volume prune`即使在容器运行时也要删除所有卷)

2022-9-23 13:34:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索