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即可,生产环境在改回来就行。