使用多重处理处理文件夹中的多个文件

时间:2019-02-04 14:46:12

标签: python multiprocessing pathlib

我正在尝试读取文件夹中的一堆文件,处理内容并保存。由于我有很多文件,因此需要并行执行操作。

这是我尝试的代码,但是当我运行它时,什么也没有发生,我什至没有得到任何错误。它只是卡住了。请注意,如果我直接使用带有文件名的EXPECT_NO_THROW (ClassOne {classThree});,它将起作用。

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()也遇到了同样的问题。我想念什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

您的函数process_file需要文件的完整路径才能打开文件。

您可以使用os模块将当前工作目录与感兴趣的文件夹一起加入。

full_paths = []
for el in source_dir.iterdir():
    full_paths.append(os.path.join(os.getcwd(),str(el)))

您现在可以正确地调用process_file方法,以迭代full_paths列表中存在的元素。

这应该可以完成