gpt4 book ai didi

python - 为什么刷新缓冲区中存储的字符很重要?

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:14 25 4
gpt4 key购买 nike

我希望我的 python 程序不断更新下载状态而不打印换行符,并发现我可以按如下方式使用\r。

print('Download status: '+str(download), end='\r')

现在我还读到我还应该包括flush = true

..., end='\r' flush=true)

但我无法确切看出它的目的。如果我不使用flush,将来会遇到什么问题?我知道已经有一个关于它的线程,但我无法真正思考如何使我的代码受益,因为即使没有刷新它也可以正常工作。

最佳答案

通常,终端是行缓冲的,因此,如果 print 的输出不包含换行符,则在发出换行符之前,您将看不到任何内容,或者当程序结束,并且作为关闭过程的一部分,stdout 被刷新。在这种情况下,您需要将 flush=True 参数添加到 print 调用中。您还可以显式调用 sys.stdout.flush(),但让 print 处理它更方便(也更快)。在 Python 2 中,您别无选择,只能调用 sys.stdout.flush()。

但是,在 Python 3 中,如果输出中存在 \r(回车符),print 函数会为您执行缓冲区刷新。所以在这种情况下,你不需要担心冲洗。

OTOH,请注意,某些 IDE/终端可能不支持此行为,您需要使用 flush=Truesys.stdout.flush()跟他们。就此而言,即使您显式刷新,某些 IDE 在使用 \rend='' 打印时甚至可能无法正确运行,例如 Spyder

关于python - 为什么刷新缓冲区中存储的字符很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48219900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com