Я пытаюсь прочитать кучу файлов в папке, обработать содержимое и сохранить их.Поскольку у меня много файлов, мне нужно распараллелить операцию.
Вот код, который я пробовал, но когда я его запускаю, ничего не происходит, я даже не получаю никакой ошибки.Это просто застряло.Обратите внимание, что если я напрямую использую process_file()
с именем файла, это работает.
from multiprocessing import Pool
from pathlib import Path
import torch
source_dir = Path('source/path')
target_dir = Path('target/path')
def process_file(file):
with open(file, 'r') as f:
result = ... # do stuff with f
target = target_dir / file.name
torch.save(result, target)
p = Pool(10)
p.map(process_file, source_dir.iterdir())
Я думал, что, возможно, это потому, что .iterdir()
дает генератор, но у меня та же проблема сos.listdir()
.Чего мне не хватает?
Заранее спасибо.