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多进程机制实例详解
Jul 02 Python
python直接访问私有属性的简单方法
Jul 25 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
python实战教程之自动扫雷
Jul 13 Python
Python如何发布程序的详细教程
Oct 09 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
python 实现体质指数BMI计算
May 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
咖啡语言
2021/03/03 咖啡文化
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
解析PHP的session过期设置
2013/06/29 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
python批量赋值操作实例
2018/10/22 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
生产内勤岗位职责
2013/12/07 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang