time.sleep 不适用于范围或列表中的每个项目[重复]
Posted
技术标签:
【中文标题】time.sleep 不适用于范围或列表中的每个项目[重复]【英文标题】:time.sleep not working per item in range or list [duplicate] 【发布时间】:2020-12-21 16:56:57 【问题描述】:我正在尝试编写这样的代码
def no(t=.001):
print("N", end='')
for i in range(1000):
print('o', end='')
time.sleep(t)
print()
所以当我打电话给no()
时,我会打印一个很长的“Nooooo...”,在每个“o”之间等待一段时间。
相反,函数会在整个总时间(默认参数为 1 秒)内停止,然后打印整个列表。
这是故意的吗?如果不是,我应该如何获得预期的效果?
【问题讨论】:
print(..., flush=True)
【参考方案1】:
这里发生的情况是,python 实际上以与您想要的完全相同的方式打印所有字符 - 它每秒将 N
写入标准输出,然后将 o
写入标准输出。问题是操作系统没有显示它,因为文件(stdout 是一个文件)没有被刷新。这通常会在打印 \n
时自动发生(默认情况下,在打印字符串的末尾),但您会用 end==''
覆盖它。
幸运的是,print
有一个可选的flush
参数,您可以使用它来强制刷新。因此,您应该能够通过以下方式解决您的行为:
def no(t=.001):
print("N", end='', flush=True)
for i in range(1000):
print('o', end='', flush=True)
time.sleep(t)
print()
【讨论】:
以上是关于time.sleep 不适用于范围或列表中的每个项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章
onClick 事件不适用于 android 中的嵌套列表视图项控件