In [1]:
%load_ext watermark
%watermark -v -d -u -p pyprind
In [2]:
import pyprind
Using a for-loop
In [3]:
import time
n = 100
timesleep = 0.05
bar = pyprind.ProgBar(n)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
In a while-loop
In [4]:
import random
random.seed(1)
collection = set()
n = 100
bar = pyprind.ProgBar(n, track_time=False, title='while example')
while len(collection) < n:
r = random.randint(0, 10**5)
if r % 7 and r not in collection:
collection.add(r)
bar.update()
time.sleep(timesleep)
print(bar)
Note: the Percentage indicator is significantly slower due to background computation.
Thus, it is recommended for tasks with less iterations but longer computational time per iteration.
In [5]:
perc = pyprind.ProgPercent(n)
for i in range(n):
time.sleep(timesleep) # your computation here
perc.update()
Alternatively, you can use the progress bar and percentage indicators as generators.
In [6]:
for i in pyprind.prog_bar(range(n)):
time.sleep(timesleep) # your computation here
In [7]:
for i in pyprind.prog_percent(range(n)):
time.sleep(timesleep) # your computation here
Simply print()
the tracking object after the tracking has completed.
In [8]:
bar = pyprind.ProgBar(n)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
print(bar)
In [9]:
bar = pyprind.ProgBar(n, monitor=True, title='Job_1')
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
# print report for future reference
print(bar)
monitor
(bool
): default False. Monitors CPU and memory usage if True
(requires the psutil
package).
In [10]:
bar = pyprind.ProgBar(n, monitor=True)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
print(bar)
In [11]:
perc = pyprind.ProgPercent(n, monitor=True)
for i in range(n):
time.sleep(timesleep) # your computation here
perc.update()
print(perc)
title
(str
): default ''. A title for the progress bar
In [12]:
bar = pyprind.ProgBar(n, title='My 1st Progress Bar')
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
In [13]:
perc = pyprind.ProgPercent(n, title='My 1st Percent Tracker')
for i in range(n):
time.sleep(timesleep) # your computation here
perc.update()
width
(int
): default 30. Sets the progress bar width in characters.
In [14]:
bar = pyprind.ProgBar(n, width=10)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
In [15]:
bar = pyprind.ProgBar(n, width=70)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
stream
(int
): default 2. Takes 1 for stdout, 2 for stderr, or given stream object
In [16]:
bar = pyprind.ProgBar(n, stream=1)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
In [17]:
bar = pyprind.ProgBar(n, stream=2)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
In [18]:
import sys
bar = pyprind.ProgBar(n, stream=sys.stdout)
for i in range(n):
time.sleep(timesleep) # your computation here
bar.update()
The tracking object can be stopped early via the .stop()
method:
In [19]:
bar = pyprind.ProgBar(n)
for i in range(n):
time.sleep(timesleep) # your computation here
if i == 5:
bar.stop()
break
bar.update()
Sometimes it is useful to print out the name of currently processed items, e.g., files are being processed. This can be done by providing a custom string for the optional item_id
parameter of the .update()
method.
In [20]:
items = ['file_%s.csv' %i for i in range(1,21)]
bar = pyprind.ProgBar(len(items))
for i in items:
time.sleep(timesleep) # your computation here
bar.update(item_id = i)
In [21]:
bar = pyprind.ProgBar(n, bar_char='█')
for i in range(n):
time.sleep(0.1) # do some computation
bar.update()
Update the progress in after iteration of the loop via the force_flush
parameter.
In [22]:
n = 100
bar = pyprind.ProgBar(n, bar_char='█')
for i in range(n):
time.sleep(0.5) # do some computation
bar.update(force_flush=True)
Update the progress every 4 seconds using the update_interval
parameter.
In [23]:
n = 100
bar = pyprind.ProgBar(n, bar_char='█', update_interval=4)
for i in range(n):
time.sleep(0.2) # do some computation
bar.update()
In [24]:
n = 100
bar = pyprind.ProgPercent(n, update_interval=4)
for i in range(n):
time.sleep(0.2) # do some computation
bar.update()