python进程池实现的多进程文件夹copy器完整示例


Posted in Python onNovember 27, 2019

本文实例讲述了python进程池实现的多进程文件夹copy器。分享给大家供大家参考,具体如下:

应用:文件夹copy器(多进程版)

import multiprocessing
import os
import time
import random
def copy_file(queue, file_name,source_folder_name, dest_folder_name):
  """copy文件到指定的路径"""
  f_read = open(source_folder_name + "/" + file_name, "rb")
  f_write = open(dest_folder_name + "/" + file_name, "wb")
  while True:
    time.sleep(random.random())
    content = f_read.read(1024)
    if content:
      f_write.write(content)
    else:
      break
  f_read.close()
  f_write.close()
  # 发送已经拷贝完毕的文件名字
  queue.put(file_name)
def main():
  # 获取要复制的文件夹
  source_folder_name = input("请输入要复制文件夹名字:")
  # 整理目标文件夹
  dest_folder_name = source_folder_name + "[副本]"
  # 创建目标文件夹
  try:
    os.mkdir(dest_folder_name)
  except:
    pass # 如果文件夹已经存在,那么创建会失败
  # 获取这个文件夹中所有的普通文件名
  file_names = os.listdir(source_folder_name)
  # 创建Queue
  queue = multiprocessing.Manager().Queue()
  # 创建进程池
  pool = multiprocessing.Pool(3)
  for file_name in file_names:
    # 向进程池中添加任务
    pool.apply_async(copy_file, args=(queue, file_name, source_folder_name, dest_folder_name))
  # 主进程显示进度
  pool.close()
  all_file_num = len(file_names)
  while True:
    file_name = queue.get()
    if file_name in file_names:
      file_names.remove(file_name)
    copy_rate = (all_file_num-len(file_names))*100/all_file_num
    print("\r%.2f...(%s)" % (copy_rate, file_name) + " "*50, end="")
    if copy_rate >= 100:
      break
  print()
if __name__ == "__main__":
  main()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
Python批量按比例缩小图片脚本分享
May 21 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
Python解析json文件相关知识学习
Mar 01 Python
Python安装使用命令行交互模块pexpect的基础教程
May 12 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
Oct 28 Python
Python中的集合介绍
Jan 28 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
python面试题之列表声明实例分析
Jul 08 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
Python爬取网站图片并保存的实现示例
Feb 26 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 #Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 #Python
python [:3] 实现提取数组中的数
Nov 27 #Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 #Python
python中的数组赋值与拷贝的区别详解
Nov 26 #Python
使用python切片实现二维数组复制示例
Nov 26 #Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 #Python
You might like
linux下 C语言对 php 扩展
2008/12/14 PHP
php 引用(&)详解
2009/11/20 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
js格式化时间的方法
2015/12/18 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
python 调用Google翻译接口的方法
2020/12/09 Python
Python 可视化神器Plotly详解
2020/12/26 Python
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
介绍信如何写
2015/01/31 职场文书
2015年元宵节活动总结
2015/02/06 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
JavaScript组合继承详解
2021/11/07 Javascript
处理canvas绘制图片模糊问题
2022/05/11 Javascript