2011-09-19 93 views
2

我想顯示進度條在我的腳本,因爲它需要大量的時間來巨大files.I通過python progressbar module腳本使用Python進度條的

和例子也是它的好,非常去工作,而執行intresting使用,但按照實例的所有值都是預先定義的。大家不能猜測PROGRAMM或function.So的最大執行時間我不能夠弄清楚我應該如何使用進度條功能在我sctipt

for data in files: 
    crawl_data(data) 

這是需要時間的crawl_data函數,所以我如何設置進度條值

pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start() 
for i in range(300): 
    time.sleep(0.01) 
    pbar.update(i+1) 
pbar.finish() 

我如何在上面的代碼行中定義這個範圍和maxval值。

+1

你要決定你自己的規模,並制定出什麼數字意味着自己。沒有更多的信息,我們無法提供幫助。 –

+0

我想說,如何設置maxval和該範圍在執行之前,它應該需要一些延遲時間作爲一個類似的東西,我不知道.. – Shashi

+0

設置最大值爲文件的大小,並增加位置時閱讀它。 – Louis

回答

2

這就是我的工作。

標準輸出

Working: | Elapsed Time: 0:00:10 

的Python

import time 
import progressbar 
import threading 

def crawl_data(data): 
    # sleep for 10 seconds 
    time.sleep(10) 
# end of def crawl_data 

def main(): 
    data = 'some data' 
    widgets = ['Working: ', progressbar.AnimatedMarker(), ' ', 
        progressbar.Timer()] 
    pbar = progressbar.ProgressBar(widgets=widgets) 
    # creating thread to run crawl_data() 
    thread = threading.Thread(target=crawl_data, 
           args=(data,)) 
    thread.daemon = True 
    # starting thread and progress bar 
    thread.start() 
    pbar.start() 
    i = 1 
    # continuous loop until crawl_data thread is not alive 
    while True: 
     # update every second 
     time.sleep(1) 
     pbar.update(i) 
     if not thread.is_alive(): 
      pbar.finish() 
      break 
     # end of if thread is not alive 
     i += 1 
    # end of continuous loop until crawl_data thread is not alive 
    # prints a new line 
    print 
# end of def main 

# run main 
main() 
0

如果你不能猜測執行時間,進度條毫無價值(記得大多數舊的MS進度條?)。您可能正在尋找一些活動指標。自從web2.0以來,通常使用旋轉的東西。