1. 程式人生 > >Python中使用sys.stdout.write()顯示處理進度

Python中使用sys.stdout.write()顯示處理進度

有些時候當我們處理資料的時候,需要顯示處理進度:

比如有一個數據集:

import numpy as np
i = np.arange(1, 10000)
print(i)
# [   1    2    3 ... 9997 9998 9999]

我們編寫了一個程式,讓每個成員加一:

from time import sleep
def add1(j):
    for n in range(len(j)):
        sleep(0.0001)
        j[n] = j[n] + 1
    return j


i = add1(i)
print(i)
# [    2     3     4 ...  9998  9999 10000]

想看這個add1()程式處理資料的進度,可以使用sys.stdout.write()函式

import sys
from time import sleep
def add1(j):
    for n in range(len(j)):
        sleep(0.0001)
        j[n] = j[n] + 1
        sys.stdout.write("\r# Process: %0.1f %%" % (float(n) / float(len(j)) * 100))
    return j


i = add1(i)
print("\n", i)
# Process: 100.0 %
#  [    2     3     4 ...  9998  9999 10000]

Tips:

1. 如果在下面加上以下程式碼則表示一秒重新整理一次

sys.stdout.write("```")
sys.stdout.flush()  # 一秒重新整理一次

2. 保留小數位數

0.1f --> 保留一位

0.2f --> 保留兩位