第六节 多进程拷贝文件

时间:2020-03-26
本文章向大家介绍第六节 多进程拷贝文件,主要包括第六节 多进程拷贝文件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
 1 import os
 2 import multiprocessing
 3 import os
 4 import time
 5 
 6 def copy_file(old_file, new_file, q):
 7         """拷贝数据"""
 8         old_f = open(old_file, 'rb')
 9         old_content = old_f.read()
10         old_f.close()
11         # 打开新文件开始拷贝
12         # print(os.listdir(new_file))
13         new_filex = open(new_file, 'wb')
14         new_filex.write(old_content)
15         new_filex.close()
16         q.put(1)
17         time.sleep(1)
18 
19 def main():
20     # 1、获取文件夹内每个文件名
21     old_path = r'G:\test'
22     old_filename = os.listdir(old_path)
23     # print(old_filename)
24     # 2、创建一个新的文件夹用于存储拷贝的文件
25     new_path = r'G:\\'
26     new_filename = 'testcopy'
27     new_filename_path = os.path.join(new_path, new_filename)
28     os.mkdir(new_filename_path)
29     # 3、拷贝函数
30     # copy_file(old_filename, old_path, new_filename)
31     # 4、创建进程池
32     po = multiprocessing.Pool(3)
33     q = multiprocessing.Manager().Queue()
34     for x in old_filename:
35         old_file = os.path.join(old_path, x)
36         new_file = os.path.join(new_filename_path, x)
37         po.apply_async(copy_file, (old_file, new_file, q))
38     po.close()
39     # po.join()
40     # 6、显示拷贝进度,取消po.join(),通过while循环来阻塞主进程结束
41     while True:
42         num = q.qsize()
43         num_all = len(old_filename)
44         print('\r拷贝进度为:%.02f %%' % (num*100/num_all))
45         if num ==num_all:
46             break
47 
48 if __name__ == '__main__':
49     main()

原文地址:https://www.cnblogs.com/kogmaw/p/12575482.html