Search code examples
pythonprogress-bar

Python Progress Bar


How do I use a progress bar when my script is doing some task that is likely to take time?

For example, a function which takes some time to complete and returns True when done. How can I display a progress bar during the time the function is being executed?

Note that I need this to be in real time, so I can't figure out what to do about it. Do I need a thread for this? I have no idea.

Right now I am not printing anything while the function is being executed, however a progress bar would be nice. Also I am more interested in how this can be done from a code point of view.


Solution

  • There are specific libraries (like this one here) but maybe something very simple would do:

    import time
    import sys
    
    toolbar_width = 40
    
    # setup toolbar
    sys.stdout.write("[%s]" % (" " * toolbar_width))
    sys.stdout.flush()
    sys.stdout.write("\b" * (toolbar_width+1)) # return to start of line, after '['
    
    for i in range(toolbar_width):
        time.sleep(0.1) # do real work here
        # update the bar
        sys.stdout.write("-")
        sys.stdout.flush()
    
    sys.stdout.write("]\n") # this ends the progress bar
    

    Note: progressbar2 is a fork of progressbar which hasn't been maintained in years.