多进程拷贝文件代码
时间: 2023-07-06 17:05:36 浏览: 84
以下是一个简单的多进程拷贝文件代码,它使用了Python内置的multiprocessing库:
```python
import os
import shutil
import multiprocessing
def copy_file(src_path, dst_path):
try:
shutil.copy2(src_path, dst_path)
print(f'Copied {src_path} to {dst_path} in process {os.getpid()}')
except Exception as e:
print(f'Error copying {src_path}: {e}')
def copy_files(src_dir, dst_dir, num_processes=4):
file_list = os.listdir(src_dir)
src_paths = [os.path.join(src_dir, f) for f in file_list]
dst_paths = [os.path.join(dst_dir, f) for f in file_list]
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
with multiprocessing.Pool(processes=num_processes) as pool:
pool.starmap(copy_file, zip(src_paths, dst_paths))
if __name__ == '__main__':
src_dir = '/path/to/source/dir'
dst_dir = '/path/to/destination/dir'
copy_files(src_dir, dst_dir)
```
该代码首先定义了一个`copy_file`函数,用于复制单个文件。然后定义了一个`copy_files`函数,用于遍历源目录中的所有文件,创建一个新的进程池,并使用`pool.starmap`方法并发地调用`copy_file`函数来复制所有文件。
在主程序中,我们可以指定源目录和目标目录,并可选地指定要使用的进程数。然后我们调用`copy_files`函数来开始复制。
阅读全文