# Utils¶

## ProgressBar¶

If you want to apply a method to a list of items and track the progress, track_progress is a good choice. It will display a progress bar to tell the progress and ETA.

import mmcv

def func(item):
# do something
pass

tasks = [item_1, item_2, ..., item_n]



The output is like the following.

There is another method track_parallel_progress, which wraps multiprocessing and progress visualization.

mmcv.track_parallel_progress(func, tasks, 8)  # 8 workers


If you want to iterate or enumerate a list of items and track the progress, track_iter_progress is a good choice. It will display a progress bar to tell the progress and ETA.

import mmcv

tasks = [item_1, item_2, ..., item_n]

# do something like print

# do something like print
print(i)


## Timer¶

It is convenient to compute the runtime of a code block with Timer.

import time

with mmcv.Timer():
# simulate some code block
time.sleep(1)


or try with since_start() and since_last_check(). This former can return the runtime since the timer starts and the latter will return the time since the last time checked.

timer = mmcv.Timer()
# code block 1 here
print(timer.since_start())
# code block 2 here
print(timer.since_last_check())
print(timer.since_start())