【发布时间】:2017-11-03 08:34:56
【问题描述】:
我有一个程序可以将大量文件从一个位置复制到另一个位置 - 我说的是 100,000 多个文件(我正在复制图像序列中的 314g)。他们都在极端的巨大,非常快速的网络存储上。我正在使用shutil按顺序复制文件,这需要一些时间,所以我试图找到优化它的最佳方法。我注意到一些我有效地使用多线程从网络读取文件的软件在加载时间上有很大的提高,所以我想尝试在 python 中执行此操作。
我没有编程多线程/多进程的经验 - 这似乎是正确的领域吗?如果是这样,最好的方法是什么?我查看了其他一些关于在 python 中进行线程文件复制的 SO 帖子,他们似乎都说你没有速度提升,但考虑到我的硬件,我认为情况并非如此。目前,我的 IO 上限还差得很远,资源仅占 1% 左右(我在本地有 40 个内核和 64g 的 RAM)。
【问题讨论】:
-
你看过
threading.Thread吗? docs.python.org/2/library/threading.html您可以创建多个线程,启动并加入它们,我不确定这是否会有所帮助,但这是我唯一能想到的。 -
嘿胡安,我当然可以深入研究这个。我想我的问题更多的是是否值得教自己如何做到这一点,而最终它甚至可能不会更快。换句话说,有没有人有使用线程加速复制时间的经验?
-
嗯,基于link,我认为多处理会比线程更好,因为“进程具有独立的 I/O 调度。”
-
repl.it/I2hT/0你可以试试这样的,不是太复杂,我没用过多处理,就是多线程。希望对您有所帮助。
-
@JohnMee 终于成功了!对我来说,最佳点是大约 16 个核心。我实际上看到 20 后速度有所下降。stackoverflow.com/questions/8584797/…
标签: python multithreading shutil