码迷,mamicode.com
首页 > 其他好文 > 详细

第一次遇到刷新缓冲区延时

时间:2019-01-27 16:41:04      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:python   pytho   __name__   hello   stdout   背景   str   imp   出现   

背景

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

 

 

---

第一次遇到刷新缓冲区延时

标签:python   pytho   __name__   hello   stdout   背景   str   imp   出现   

原文地址:https://www.cnblogs.com/JiangLe/p/10326637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!