Home

Awesome

Build Status Coverage Status Python 2.7 Python 3 License

PyPrind (Python Progress Indicator)

The PyPrind (Python Progress Indicator) module provides a progress bar and a percentage indicator object that let you track the progress of a loop structure or other iterative computation.
Typical applications include the processing of large data sets to provide an intuitive estimate at runtime about the progress of the computation.

PyPrind Demo

<br>

Progress Bars and Percentage Generators

import pyprind

for i in pyprind.prog_bar(range(n)):
    time.sleep(timesleep) # your computation here
0%                          100%
[##############################] | ETA: 00:00:00
Total time elapsed: 00:00:05
<br> <br>
for i in pyprind.prog_percent(range(n)):
    time.sleep(timesleep) # your computation here
[10 %] Time elapsed: 00:00:01 | ETA: 00:00:04

While-loops

The ProgBar and ProgPercent classes also support while loops if desired. The objects are updated inside the loop using the update method as shown below:

import random
import pyprind
import time

timesleep = 0.05
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)
while example
0%                          100%
[##############################]
Title: while example
  Started: 09/07/2016 13:06:58
  Finished: 09/07/2016 13:07:03
  Total time elapsed: 00:00:05
<br> <br> <a id='advanced_tracking'>

Advanced Tracking

If you have the psutil package installed, you can set the monitor=True to track CPU and memory usage:

bar = pyprind.ProgBar(n, monitor=True)
for i in range(n):
    time.sleep(timesleep) # your computation here
    bar.update()
print(bar)
0%                          100%
[##############################] | ETA: 00:00:00
Total time elapsed: 00:00:05
Title:
  Started: 09/07/2016 13:14:09
  Finished: 09/07/2016 13:14:14
  Total time elapsed: 00:00:05
  CPU %: 1.90
  Memory %: 0.48
<br> <br>

Choose Your Favorite Bar Style

bar = pyprind.ProgBar(n, bar_char='█')
for i in range(n):
    time.sleep(0.1) # do some computation
    bar.update()
0%                          100%
[██████████████████████████████] | ETA: 00:00:00
Total time elapsed: 00:00:10

Note to PyCharm users

If you are using the PyCharm IDE, you need to pass the sys.stdout or sys.err as a stream argument to display the progress indicators correctly in the IDE. For example,

import sys

bar = pyprind.ProgBar(n, stream=sys.stdout)
for i in range(n):
    time.sleep(0.1) # do some computation
    bar.update()
<br> <br>

###View more examples in an IPython Demo Notebook

<br> <br> <a id='sections'>

Sections

<p><a id="installation"></a></p> <br> <br> <br>

Installation

[back to top]

The most convenient way to install PyPrind is via tools like pip or easy_install:

PyPrind comes without any dependencies except for the optional psutil to monitor CPU and memory usages. You can install psutil via pip install psutil or install it automatically with PyPrind:
pip install pyprind -r requirements.txt

Alternatively, you can install PyPrind the classic way: Download the package from the Python Package Index https://pypi.python.org/pypi/PyPrind, unzip it, navigate into the unzipped directory, and use the command

python setup.py install

<p><a id="documentation"></a></p> <br> <br> <br>

Documentation

[back to top]

PyPrind consists of two class objects that can visualize the progress of a computation on the output screen.
Progress bars are available via ProgBar, and percentage indicators can be used via a ProgPercent.

	n = 10000000
	bar = pyprind.ProgBar(n)   # 1) initialization with number of iterations
	for i in range(n):
    	# do some computation
    	bar.update()           # 2) update the progress visualization

Alternatively, the progress can be tracked via the equivalent generator functions prog_bar and prog_percent:

	for i in pyprind.prog_bar(range(n)):
    	# do something
    	pass
<br>

Complete Parameter of Parameters and Options

ProgBar

ProgBar(iterations, track_time=True, width=30, bar_char='#', stream=2, title='', monitor=False, update_interval=None))

ProgPercent

ProgPercent(iterations, track_time=True, stream=2, title='', monitor=False, update_interval=None)

update method

update(iterations=1, item_id=None, force_flush=False)

<br> <p><a id="examples"></a></p> <br> <br> <br>

Examples

[back to top]

Examples for using the progress bar and percentage indicator objects can be found in the IPython Demo Notebook.

<p><a id="contact"></a></p> <br> <br> <br>