zoukankan      html  css  js  c++  java
  • 第一次遇到刷新缓冲区延时

    背景

      之前一直只是知道像 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 之后才出现的。

    ---

  • 相关阅读:
    url向视图函数传递参数
    创建django项目
    进度百分比
    【转藏】Makefile学习
    IT人的自我导向型学习:学习的4个层次
    SZ第二次找工作--笔试汇总
    正则表达式 (re包)——python(快餐)
    Python-快速学习
    Vim的使用
    Vim Python
  • 原文地址:https://www.cnblogs.com/JiangLe/p/10326637.html
Copyright © 2011-2022 走看看