Gul*_*zar 2 python multiprocessing
我有src_list和dst_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()。