python 如何在多线程或处理器中执行文件复制?

How to perform file copying in multiple threads or processor in python?

我正在尝试在 python 中复制文件,在顺序方法中需要很长时间,所以我想在多个线程中进行。下面是我在顺序中复制文件的代码

for file in files:
    shutil.copy(file,destination_path)

这需要大约 1.2 秒才能完成 我尝试如下实现多线程

import multiprocessing
copy_instance(src,dest):
    shutil.copy(src,dest)
for file in files:
    p1 = multiprocessing.process(target=copy_instance,args=(file,destination_path)
    p1.start()

这需要 168.8 秒才能完成

在多处理中执行此操作比顺序方法花费更多时间,我做错了什么?我怎样才能正确地实现多线程来加速我的复制过程?对此的任何帮助或建议都会非常有帮助,谢谢

生成新进程很慢,尤其是在 windows 中。你应该使用多线程而不是多线程,这在 CPython 中对 I/O 有好处( 对 CPU 绑定进程不利):

import shutil
import itertools
from concurrent.futures import ThreadPoolExecutor

def copy_instance(args):
    shutil.copy(*args)
    
#   ... snipped definition of files and destination

with ThreadPoolExecutor() as pool:
    pool.map(copy_instance, zip(files, itertools.repeat(destination)))

然而,如评论中所述,根据您的存储,您可能看不到任何差异。