我正在编写python代码以将一堆大文件/文件夹从一个位置复制到桌面上的其他位置(无网络,一切都是本地的)。我正在使用shutil模块。Python多进程/多线程用于并发文件复制操作
但问题是需要更多时间,所以我想加快这个复制过程。我尝试过使用线程和多处理模块。但令我惊讶的是,两者都比顺序代码花费更多的时间。
还有一个观察结果是 - 所需时间随着相同数量文件夹的进程数量的增加而增加。我的意思是想我有以下目录结构
/a/a1, /a/a2, /b/b1 and /b/b2
如果我创建2个进程来复制文件夹A和B假设2分钟时的时间。 现在如果我创建4个进程来复制文件夹a/a1,a/a2,b/b1和b/b2,大约需要4分钟。我只在多处理的时候才尝试过,不确定线程。
我不确定发生了什么。会有人有类似的问题吗?有什么最佳实践可以共享使用python中的多处理/线程?
感谢 作者Abhijit
你的问题可能是IO限制的,所以更多的计算并行化将无济于事。正如你所看到的,现在要求IO请求在各个线程/进程之间来回跳转,可能会让问题变得更糟。对于在计算机上移动数据的速度有实际的限制,特别是涉及到磁盘的情况。 – Joe
@Joe这是一个答案。把它移到一个,你有我的投票。 – agf
为了让多个进程加快速度,磁盘的多个磁头必须能够独立工作。但那不是他们的工作方式。 –