第一次遇到刷新缓冲区延时
Posted jiangle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一次遇到刷新缓冲区延时相关的知识,希望对你有一定的参考价值。
【背景】
之前一直只是知道像 print 这样输出函数,存在一种可能,就是要打印的值还停留在缓冲区并没有被刷新到 std.out,这样我们在命令行中
中看不到它的输出。 之前从来没有遇到过,而且还是可以稳定复现的那种。
【看一下缓冲区刷新不及时的情况】
import asyncio import sys async def main(): print("hello ",end=‘ ‘) await asyncio.sleep(1) print("world") if __name__ == "__main__": asyncio.run(main())
上面代码的输出如下:
python3 main.py
hello world
重点是“hello”与“world”是同时出现的,也就是说“hello”先停在了缓冲区中,等到“world”这个词到来之后再一起刷出绥中区
【看一下主动刷新缓冲区的情况】
import asyncio import sys async def main(): print("hello ",end=‘ ‘) sys.stdout.flush() await asyncio.sleep(1) print("world") if __name__ == "__main__": asyncio.run(main())
虽然输出还是“hello world” 但是可以明显的看到“world”是在“hello”出现后 1s 之后才出现的。
---
以上是关于第一次遇到刷新缓冲区延时的主要内容,如果未能解决你的问题,请参考以下文章
片段中的Android ListView - 获取新数据后刷新表的问题