多进程文件备份,要求:1.通过输入指定复制源和目的文件夹,2.显示复制所用时间
时间: 2024-05-14 17:12:59 浏览: 81
以下是Python代码示例:
```python
import shutil
import os
import time
import multiprocessing
def copy_file(src, dst):
start_time = time.time()
shutil.copy(src, dst)
end_time = time.time()
print(f"Copy {src} to {dst} used {end_time - start_time:.2f}s")
if __name__ == "__main__":
src = input("Enter source folder: ")
dst = input("Enter destination folder: ")
if not os.path.exists(src):
print(f"{src} does not exist!")
exit(1)
if not os.path.exists(dst):
os.mkdir(dst)
start_time = time.time()
pool = multiprocessing.Pool(processes=4)
for root, dirs, files in os.walk(src):
for file in files:
src_file = os.path.join(root, file)
dst_file = os.path.join(dst, os.path.relpath(src_file, src))
pool.apply_async(copy_file, args=(src_file, dst_file))
pool.close()
pool.join()
end_time = time.time()
print(f"Total time used: {end_time - start_time:.2f}s")
```
程序首先会要求用户输入源文件夹和目标文件夹的路径,如果源文件夹不存在,则会提示错误并退出程序。如果目标文件夹不存在,则会自动创建。
程序使用`multiprocessing.Pool`创建进程池,每个进程复制一个文件。在复制文件的函数中,使用`shutil.copy`复制文件,并记录开始和结束时间,最后输出复制所用时间。
程序使用`os.walk`遍历源文件夹中的所有文件,并对每个文件启动一个进程。复制完成后,程序输出总共用时。
阅读全文