utils.md 1.53 KB
Newer Older
Zaida Zhou's avatar
Zaida Zhou 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)
```

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

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

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

28
![progress](../../_static/parallel_progress.*)
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
69

如果你想要迭代或枚举数据列表并可视化进度,你可以使用 `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())
```