14
14
15
15
__all__ = ['progress_bar' ]
16
16
17
- class ProgressBar (object ):
17
+ class ProgressBar (object ):
18
18
def __init__ (self , iterations , animation_interval = .5 ):
19
19
self .iterations = iterations
20
20
self .start = time .time ()
21
21
self .last = 0
22
22
self .animation_interval = animation_interval
23
23
24
- def percentage (self , i ):
24
+ def percentage (self , i ):
25
25
return 100 * i / float (self .iterations )
26
26
27
27
def update (self , i ):
28
28
elapsed = time .time () - self .start
29
- i = i + 1
30
-
31
- if elapsed - self .last > self .animation_interval or i == self .iterations :
32
- self .animate (i + 1 , elapsed )
33
- self .last = elapsed
34
-
29
+ i += 1
30
+
31
+ if elapsed - self .last > self .animation_interval :
32
+ self .animate (i + 1 , elapsed )
33
+ self .last = elapsed
34
+ elif i == self .iterations :
35
+ self .animate (i , elapsed )
36
+
35
37
class TextProgressBar (ProgressBar ):
36
38
def __init__ (self , iterations , printer ):
37
39
self .fill_char = '-'
@@ -45,16 +47,16 @@ def animate(self, i, elapsed):
45
47
self .printer (self .progbar (i , elapsed ))
46
48
47
49
48
- def progbar (self ,i , elapsed ):
50
+ def progbar (self ,i , elapsed ):
49
51
bar = self .bar (self .percentage (i ))
50
52
return "[%s] %i of %i complete in %.1f sec" % (bar , i , self .iterations , round (elapsed ,1 ))
51
-
53
+
52
54
def bar (self , percent ):
53
55
all_full = self .width - 2
54
56
num_hashes = int (percent / 100 * all_full )
55
-
57
+
56
58
bar = self .fill_char * num_hashes + ' ' * (all_full - num_hashes )
57
-
59
+
58
60
info = '%d%%' % percent
59
61
loc = ( len (bar ) - len (info ) )/ 2
60
62
return replace_at (bar , info , loc , loc + len (info ))
@@ -68,7 +70,7 @@ def consoleprint(s):
68
70
print (s , '\r ' , end = '' )
69
71
else :
70
72
print (s )
71
-
73
+
72
74
def ipythonprint (s ):
73
75
print ('\r ' , s , end = '' )
74
76
sys .stdout .flush ()
@@ -82,7 +84,7 @@ def __init__(self, iterations):
82
84
"""
83
85
<div style="float: left; border: 1px solid black; width:500px">
84
86
<div id="%s" style="background-color:blue; width:0%%"> </div>
85
- </div>
87
+ </div>
86
88
<label id="%s" style="padding-left: 10px;" text = ""/>
87
89
""" % (self .divid ,self .sec_id ))
88
90
display (pb )
@@ -103,10 +105,10 @@ def run_from_ipython():
103
105
return False
104
106
105
107
def progress_bar (iters ):
106
- if run_from_ipython ():
108
+ if run_from_ipython ():
107
109
if None :
108
110
return NotebookProgressBar (iters )
109
- else :
111
+ else :
110
112
return TextProgressBar (iters , ipythonprint )
111
113
else :
112
114
return TextProgressBar (iters , consoleprint )
0 commit comments