ga('set', 'anonymizeIp', 1);
Categories: CodingPython

[python] 顯示程式執行進度百分比

Share

在執行python程式時常是要等待一段運算時間,這個時候讓自己或使用者能清楚知道目前執行到哪裡是很好的UX設計。

本文示範如何讓python程式執行顯示當前執行進度百分比。

引用函式庫

需要引用的函式庫有以下幾個

  • os
  • threading
  • sys
  • time

程式範例

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():
        # This will be the  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)
                    (*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秒。

Jys

Published by
Jys

Recent Posts

[python] Flask Create RESTful API

This article gi... Read More

3 年 前發表

[Javascript] 新增/刪除JSON中key值

在web訊息交換常會需要對JS... Read More

3 年 前發表

[JAVA] SQL Server Connection

本文介紹JAVA連線SQL s... Read More

3 年 前發表