python執行時強制重新整理緩衝區

miner_k發表於2017-08-09

需求:列印一顆”*”休息1s

程式碼如下:

#!/usr/bin/python
#coding=utf-8
'''
暫停1s輸出
'''

import time

def printStar(n):
        for i in range(n):
                print " * ",
                time.sleep(1)

if __name__ == '__main__':
        printStar(10)

輸出結果(等待10s後一次性輸出):

[root@miner_k test]# python sleep.py 
 *   *   *   *   *   *   *   *   *   * 

分析原因
在執行程式碼時,列印10個"*"沒有佔滿快取區,所以等到程式結束時,才會一次性輸出。

緩衝區的重新整理方式:
    1.flush()重新整理快取區
    2.緩衝區滿時,自動重新整理
    3.檔案關閉或者是程式結束自動重新整理。

正確程式碼:

#!/usr/bin/python
#coding=utf-8
'''
暫停1s輸出
'''

import time
import sys


def printStar(n):
        for i in range(n):
                print " * ",
                sys.stdout.flush()
                time.sleep(1)

if __name__ == '__main__':
        printStar(10)

相關文章