第一次遇到刷新緩衝區延時

背景python

  以前一直只是知道像 print 這樣輸出函數,存在一種可能,就是要打印的值還停留在緩衝區並無被刷新到 std.out,這樣咱們在命令行中async

  中看不到它的輸出。   以前歷來沒有遇到過,並且仍是能夠穩定復現的那種。函數

 

看一下緩衝區刷新不及時的狀況spa

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」這個詞到來以後再一塊兒刷出綏中區code

 

看一下主動刷新緩衝區的狀況blog

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 以後纔出現的。ci

 

 

---it

相關文章
相關標籤/搜索