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