2024-05-29 00:12:25 发布
网友
我想通过在同一条线上每秒打印一个点来创造一种进步。像“钓鱼…”。我用的是:
import time print('Fishing', end='') for i in range(5): time.sleep(1) print('.', end='')
但它会等待5秒,然后一次打印Fishing.....。但是当我不使用end=''时,它每秒都会打印点,但是会在不同的行上这样
Fishing.....
end=''
print
使用
print('.', end="", flush=True)
这是因为print被认为是一个昂贵的操作:它通常会等到必须打印大量数据,或者直到遇到新行(通常只有当输出被写入终端时):
Output buffering is determined by file. Use file.flush() to ensure, for instance, immediate appearance on a screen.
file.flush()
显然,这并不昂贵,因为它需要几分钟:但要求终端操作员打印新内容,或者要求操作系统将数据写入文件(在I/O重定向的情况下)仍然不是“闪电般的”。在
通过使用^{} on the standard output channel,可以强制打印队列中仍然存在的所有数据。在
这与print关系不大,而与您的终端关系更大。出于性能原因,每次出现换行符时文本才会“刷新”,而不是一次一个字符。在
每次打印时手动“刷新”标准输出:
import time import sys print('Fishing', end='') sys.stdout.flush() for i in range(5): time.sleep(1) print('.', end='', flush=True) # another way
如果您一直需要此功能,可以定义单独的刷新打印功能:
使用
这是因为
print
被认为是一个昂贵的操作:它通常会等到必须打印大量数据,或者直到遇到新行(通常只有当输出被写入终端时):显然,这并不昂贵,因为它需要几分钟:但要求终端操作员打印新内容,或者要求操作系统将数据写入文件(在I/O重定向的情况下)仍然不是“闪电般的”。在
通过使用^{} on the standard output channel ,可以强制打印队列中仍然存在的所有数据。在
print
会这样?在这与
print
关系不大,而与您的终端关系更大。出于性能原因,每次出现换行符时文本才会“刷新”,而不是一次一个字符。在每次打印时手动“刷新”标准输出:
如果您一直需要此功能,可以定义单独的刷新打印功能:
^{pr2}$相关问题 更多 >
编程相关推荐