Python多进程/多线程用于并发文件复制操作

时间:2011-09-09 17:17:16

标签: python multithreading

我正在编写python代码,将一堆大文件/文件夹从一个位置复制到桌面上的其他位置(没有网络,一切都是本地的)。我正在使用shutil模块。

但问题是需要更多时间,所以我想加快这个复制过程。我尝试使用线程和多处理模块。但令我惊讶的是,两者都比连续代码花费更多时间。

还有一个观察结果 - 所需时间随着相同数量文件夹的进程数量的增加而增加。我的意思是假设我有以下目录结构

                       /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

1 个答案:

答案 0 :(得分:8)

您的问题可能是IO限制的,因此更多的计算并行化无济于事。正如您所看到的,现在要求IO请求在各个线程/进程之间来回跳转,可能会使问题变得更糟。在计算机上移动数据的速度存在实际限制,特别是在涉及磁盘的情况下。