Как получить индикатор прогресса во времени - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь использовать индикатор выполнения, чтобы показать ход выполнения сценария. Я хочу увеличить прогресс после выполнения каждой функции в классе. Код, который я пробовал ниже:

import progressbar
from time import sleep

class hello():
    def no(self):
        print 'hello!'

    def yes(self):
        print 'No!!!!!!'


def pro():
    bar = progressbar.ProgressBar(widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])

    for i in Yep():
        bar.update(Yep.i())
        sleep(0.1)
    bar.finish()

if __name__ == "__main__":
    Yep = hello()
    pro()

Кто-нибудь знает, как заставить это работать. Спасибо

1 Ответ

2 голосов
/ 09 июня 2010

делает ли это то, что вы хотите?

import progressbar
from time import sleep

class hello():
    def no(self):
        print 'hello!'

    def yes(self):
        print 'No!!!!!!'

    def __call__(self) :
        methods = [self.no, self.yes]
        return [ (x[0]*100/len(methods), x[1]) for x in  enumerate(methods) ]

def pro():
    bar = progressbar.ProgressBar(widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])

    for percent, method in Yep():
        bar.update(percent)
        method()
        sleep(0.1)
    bar.finish()

if __name__ == "__main__":
    Yep = hello()
    pro()

Возможное улучшение: обнаружение методов, вызываемых по их именам (например, префикс с прогрессом _)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...