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.
You can use the following command to install PyPrind:
pip install pyprind
or
easy_install pyprind
Alternatively, you download the package manually from the Python Package Index https://pypi.python.org/pypi/PyPrind, unzip it, navigate into the package, and use the command:
python setup.py install
or
python3 setup.py install
PyPrind consists of two class objects that can visualize the progress of a computation on the output screen.
Progress bars are visualized via a ProgBar()
object, and alternatively, the progress can be tracked and shown as percentage via a ProgPercent()
object.
The general usage of ProgBar()
and ProgPercent()
consists of 2 basic steps:
1) initialize a new ProgBar()
or ProgPercent()
object with the number of iterations of the computation that is to be performed
2) update the ProgBar()
or ProgPercent()
object for each iteration via the .update()
method
n = 10000000 my_prbar = pyprind.ProgBar(n) # 1) initialization with number of iterations for i in range(n): # do some computation my_prbar.update() # 2) update the progress visualization
ProgBar(iterations, track_time=True, width=50, stream=2):
iterations (int): number of iterations of the computation
track_time (bool): prints elapsed time when loop has finished
stream: takes 1 for stdout, 2 for stderr, or given stream object
ProgPercent(iterations, track_time=True, stream=2):
iterations (int): number of iterations of the computation
width (int): width of the progress bar in characters
track_time (bool): prints elapsed time and estimated time left
stream: takes 1 for stdout, 2 for stderr, or given stream object
my_prog = pyprind.ProgBar(n, width=70) # default = 50
The optional track_time
parameter can be set for both ProgBar()
and ProgPercent()
objects.
my_prbar = pyprind.ProgBar(n, track_time=False) # default = True
my_perc = pyprind.ProgPercent(n, track_time=False) # default = True
ProgBar
objects will print the estimated time left and the total time
when the computation has finished.
ProgPercent
objects reports the elapsed time during the computation and prints
the estimated finish time of the loop.
By default, pyprind
objects writes output to the Standard error stream (stderr
). If you
want to direct the output to the Standard output (stdout
), you can initialize pyprind
with the argument stream=2
.
my_prbar = pyprind.ProgBar(n, stream=1) # writes to stdout my_prbar = pyprind.ProgBar(n, stream=2) # writes to stderr, default
If you want to use a given stream, just pass that. Example:
my_prbar = pyprint.ProgBar(n, stream=self.stdout) # writes to given stream
Django gives you a stdout object on the BaseCommand class. You will need to pass this to
pyprind
as done above. Also note that by default, Django appends a newline to every write.
This uglyfies pyprind
output, so ensure the write function gets passed ending=""
.
pyprind
will NOT do this for you.
The following examples shall illustrate the typical usage of the PyPrind package.
A visualization can be viewed on YouTube: http://youtu.be/Ex05RM9vLKE
import pyprind n = 10000000 my_prbar = pyprind.ProgBar(n) for i in range(n): # do some computation my_prbar.update()
Screen Output
sebastian > python3 ./examples/ex1_progress_bar.py 0% 100% [########################################] - ETA [sec]: 0.000 sec Total time elapsed: 4.481 sec
import pyprind n = 1000000 my_perc = pyprind.ProgPercent(n) for i in range(n): # do some computation my_perc.update()
Screen Output
sebastian > python3 ./examples/ex1_percentage_indicator.py [ 34 %] elapsed [sec]: 1.377 | ETA [sec]: 2.570
If you have any questions or comments about PyPrind, please feel free to contact me via
eMail: se.raschka@gmail.com
or Twitter: @rasbt
VERSION 2.2.0
VERSION 2.1.1
VERSION 2.1.0
VERSION 2.0.3
stream
parameter.VERSION 2.0.2
ProgBar()
object was seeded with n=48VERSION 2.0.1
VERSION 2.0.0
Added ProgBar and ProgPerc default argument stream=2
to write to stderr by
default. Set stream=1
to write to stdout.
my_prbar = pyprind.ProgBar(n, stream=1) # writes to stdout my_prbar = pyprind.ProgBar(n, stream=2) # writes to stderr, default
Does not redirect data to the standard output or error stream if program is not outputting to a terminal
VERSION 1.1.1
VERSION 1.1.0
VERSION 1.0.4
VERSION 1.0.3
VERSION 1.0.2
VERSION 1.0.1