In this guide, I will show you how to easily add progress bars to your command line. This is particularly useful if you are working on a Machine Learning project, where the program is based on a loop that can take some time to execute.
In general, a progress bar can make it easier to understand the progress that your program is making and how long it will take, whenever it is based on a loop that is repeated many times.
Tqdm: basic usage
Tqdm is a great library, that allows you to add really easily a progress bar to your code.
First of all, let’s install this library:
pip install tqdm
Then, to simulate a for loop that takes some time to execute, we will use the time.sleep
method:
import time
for i in range(10):
time.sleep(2)
If you execute this code, each iteration will take approximately two seconds, but there is no way to know while it is executing at what point it is.
We can solve this by using the tqdm
object of the tqdm library:
from tqdm import tqdm
import time
for i in tqdm(range(10)):
time.sleep(2)
Now, when you execute the code, this will be displayed in your command line:
On the left, it shows the percentage that has been completed. On the right, it shows the number of the current iteration and the total number of iterations, as well as the time taken so far and the expected remaining time. The last number is the approximate time needed per iteration.
The trange object
You will often need the command tqdm(range(...))
. Instead, you can use trange
, which works in the same way. SO we could rewrite our program as:
from tqdm import trange
import time
for i in trange(10):
time.sleep(2)
Advanced Usage
Now that we have seen the basic usage of this library, we will explore some advanced parameters of the tqdm
class.
Description
First of all, we can add a description to our progress bar. This can be particularly useful if you have multiple loops, each with a different bar, and you want to distinguish between them.
To do this, you can use the desc
parameter:
from tqdm import tqdm
import time
bar = tqdm(range(10), desc="Example bar")
for i in bar:
time.sleep(2)
This description will be shown on the left side of the bar:
Custom Stats
If you want to implement some custom stats to show in the progress bar, you will have to use the set_postfix
function to update it at each iteration. This function will take as a parameter a dictionary, with all the stats that should be shown.
Here is an example of this:
from tqdm import tqdm
import time
bar = tqdm(range(10))tot = 0
for i in bar:
time.sleep(2)
tot += i
bar.set_postfix({"total":tot})
Format
To customize the format of the progress bar, you can also use the bar_format
parameter. This takes an f-string as input, which can contain the following elements:
bar
the progress bardesc
the descriptionn_fmt
the current iteration numbertotal_fmt
the total number of iterationspercentage
the percentage that has been executed so farelapsed
the time elapsed from the beginning of the loopremaining
the expected remaining timerate_fmt
the time for iterationpostfix
the stats added byset_postfix
For example, this is a simple format that only shows the percentage (with no decimal digits) and the time elapsed and remaining:
from tqdm import tqdm
import timebar=tqdm(range(10),
bar_format="{percentage:3.0f}% |{bar}| {elapsed}/{remaining}"
)
for i in bar:
time.sleep(2)
Conclusion
Thank you for reading through to the end! I hope this article has been useful. If you want to learn more about the Tqdm library, check out the official documentation: