Python中使用sys.stdout.write()顯示處理進度
阿新 • • 發佈:2018-11-20
有些時候當我們處理資料的時候,需要顯示處理進度:
比如有一個數據集:
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 --> 保留兩位