一次pycharm在使用torch Dataloader进行debug时卡住

pycharm debug可能卡住的原因有很多,其中之一是多进程导致的, 尤其是我们在使用torch的DataLoader时,如果发生卡住,那么只需检查num_workers是否是0,即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DataLoader(
dataset,
batch_size=1,
shuffle=False,
sampler=None,
batch_sampler=None,
num_workers=0,
collate_fn=None,
pin_memory=False,
drop_last=False,
timeout=0,
worker_init_fn=None,
multiprocessing_context=None,
)
参数:
- dataset : 数据集
- batch_size: 批次大小
- shuffle: 是否乱序
- sampler: 样本采样函数,一般无需设置。
- batch_sampler: 批次采样函数,一般无需设置。
- num_workers: 使用多进程读取数据,设置的进程数。
- collate_fn: 整理一个批次数据的函数。
- pin_memory: 是否设置为锁业内存。默认为False,锁业内存不会使用虚拟内存(硬盘),从锁业内存拷贝
到GPU上速度会更快。
- drop_last: 是否丢弃最后一个样本数量不足batch_size批次数据。
- timeout: 加载一个数据批次的最长等待时间,一般无需设置。
- worker_init_fn: 每个worker中dataset的初始化函数,常用于 IterableDataset。一般不使用

根据API可知,num_workers是设置读取数据的并发进程数量,而根据pycharm的官方的issue,https://youtrack.jetbrains.com/issue/PY-39489,我们发现pycharm多进程的debug有时并不太方便,所以只需在debug时,修改num_workers即可,生产环境在改回来就行。


一次pycharm在使用torch Dataloader进行debug时卡住
https://johnson7788.github.io/2022/03/01/pycharm-debug/
作者
Johnson
发布于
2022年3月1日
许可协议