【背景】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