如何与目标列表并行复制文件列表?Python

Gul*_*zar 2 python multiprocessing

我有src_listdst_list,两个长度相同的列表。

src_list包含现有文件的路径。

dst_list包含可能要覆盖的现有文件的路径(不是文件夹!)。

src_list[i]应对应于dst_list[i].

我想将每个src_list[i]并行复制到dst_list[i](多处理,而不是线程)。

我希望该调用是阻塞的,这意味着所有进程都应该在继续之前加入。


列表示例:

src_list = [

r"/data/one/f1.txt",
r"/data/one/f2.txt",
r"/data/two/f3.txt",
r"/data/three/f4.txt",
r"/data/four/five/f5.txt",
]

dst_list = [

r"/out1/f1.txt",
r"/out2/two/three/pook.txt",
r"/data/foo/bar/baz/f333.txt",
r"/kiko/f4",
r"/data/four/five/f5.txt",
]
Run Code Online (Sandbox Code Playgroud)

实际上,只是文件的路径。请假设列表的长度约为 1000-5000 个元素。


我似乎缺少的是并行化两个可迭代对象的正确 API 调用。

小智 5

from concurrent.futures import ProcessPoolExecutor
from shutil import copyfile

with ProcessPoolExecutor() as executor:
    executor.map(copyfile, src_list, dst_list)
Run Code Online (Sandbox Code Playgroud)

如果您想限制正在处理此问题的进程数量,您可以在方法max_workers内传递一个参数ProcessPoolExecutor()