多任务拷贝小案例
2019-02-17 01:53:19来源:博客园 阅读 ()
使用到:
进程池(重复利用进程),队列(用于进程间的通信,显示进度)
功能:
拷贝文件夹下的所有文件,显示进度
注意:
如涉及到进程池同时需要使用到队列,使用multiprocessing.Manager().Queue(),而非multiprocessing.Queue()
import os import multiprocessing def copy_file(q, file_name, old_folder_name, new_folder_name): """完成文件的copy""" # print("=====>模拟copy文件 %s--->%s 文件名是:%s" % (old_folder_name, new_folder_name, file_name)) old_f = open(old_folder_name + "/" + file_name, "rb") content = old_f.read() old_f.close() new_f = open(new_folder_name + "/" + file_name, "wb") new_f.write(content) new_f.close() # 如果拷贝完了文件,那么就向队列中写入一个消息,表示已经完成 q.put(file_name) def main(): # 1.获取用户要copy的文件夹的名字 old_folder_name = input("请输入要copy的文件夹的名字:") # 2.创建一个新的文件夹 new_folder_name = old_folder_name + "[复件]" try: os.mkdir(new_folder_name) except: pass # 3.获取文件夹的所有的待copy的文件夹名字 listdir() file_names = os.listdir(old_folder_name) # print(file_names) # 4.创建进程池 po = multiprocessing.Pool(2) # 5.创建一个队列 q = multiprocessing.Manager().Queue() # 6.向进程池中添加cpoy文件的任务 for file_name in file_names: po.apply_async(copy_file, args=(q, file_name, old_folder_name, new_folder_name)) po.close() # 让主进程无线循环的去获取进度,故将join()注释 # po.join() # 获取所有文件的个数 all_file_num = len(file_names) copy_ok_num = 0 while True: file_name = q.get() # print("已经完成copy:%s" % file_name) copy_ok_num += 1 print("\r拷贝进度:%.2f%%" % (copy_ok_num/all_file_num*100), end="") if copy_ok_num >= all_file_num: break print() if __name__ == '__main__': main()
原文链接:https://www.cnblogs.com/Selling-fish-bears/p/10375679.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python第十二周:MySql
下一篇:Python模块 百日筑基之得气
- celery 分布式异步任务框架(celery简单使用、celery多任务结 2019-07-24
- 案例 — 使用bs4 爬取猫眼电影热榜 2019-07-24
- 深浅拷贝 2019-07-24
- python深浅拷贝的理解和区分 2019-07-24
- 进程和线程 2019-05-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash