utils.md 1.52 KB
Newer Older
limm's avatar
limm committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 辅助函数

### 进度条

如果你想跟踪函数批处理任务的进度,可以使用 `track_progress` 。它能以进度条的形式展示任务的完成情况以及剩余任务所需的时间(内部实现为for循环)。

```python
import mmcv

def func(item):
    # 执行相关操作
    pass

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

mmcv.track_progress(func, tasks)
```

效果如下
limm's avatar
limm committed
20
![progress](../../en/_static/progress.*)
limm's avatar
limm committed
21
22
23
24
25
26
27

如果你想可视化多进程任务的进度,你可以使用 `track_parallel_progress`

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

limm's avatar
limm committed
28
![progress](../../_static/parallel_progress.*)
limm's avatar
limm committed
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

如果你想要迭代或枚举数据列表并可视化进度,你可以使用 `track_iter_progress`

```python
import mmcv

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

for task in mmcv.track_iter_progress(tasks):
    # do something like print
    print(task)

for i, task in enumerate(mmcv.track_iter_progress(tasks)):
    # do something like print
    print(i)
    print(task)
```

### 计时器

mmcv提供的 `Timer` 可以很方便地计算代码块的执行时间。

```python
import time

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

你也可以使用 `since_start()``since_last_check()` 。前者返回计时器启动后的运行时长,后者返回最近一次查看计时器后的运行时长。

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