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 --> 保留两位

猜你喜欢

转载自blog.csdn.net/kane7csdn/article/details/83903262