在執行python程式時常是要等待一段運算時間,這個時候讓自己或使用者能清楚知道目前執行到哪裡是很好的UX設計。
本文示範如何讓python程式執行顯示當前執行進度百分比。
引用函式庫
需要引用的函式庫有以下幾個
- os
- threading
- sys
- time
程式範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import sys import time import threading import os from random import random from math import sqrt ###### Progress Counter ################################### def setInterval(interval, times = -1): def outer_wrap(function): # This will be the function to be # called def wrap(*args, **kwargs): stop = threading.Event() def inner_wrap(): i = 0 while i != times and not stop.isSet(): stop.wait(interval) function(*args, **kwargs) i += 1 t = threading.Timer(0, inner_wrap) t.daemon = True t.start() return stop return wrap return outer_wrap ############################################################ cnt = 0 Points = 5000000 @setInterval(0.4) #設定幾秒計算顯示一次百分比 def progress(): sys.stdout.write('\r%s%%'%int((i/Points)*100)) sys.stdout.flush() #清除前一筆百分比數值 stopper = progress() for i in range(Points): x, y = random(), random() dis = sqrt(x**2 + y**2) time.sleep(0.1) stopper.set() |
這邊使用5000000個點做迴圈中的直線距離計算,
在MBP上大約需3~4秒。
留言