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优先队列实现方法示例
Sep 21 Python
名片管理系统python版
Jan 11 Python
python使用tkinter实现简单计算器
Jan 30 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
Python设置在shell脚本中自动补全功能的方法
Jun 25 Python
python读写LMDB文件的方法
Jul 02 Python
python中的句柄操作的方法示例
Jun 20 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
pytorch实现线性拟合方式
Jan 15 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
利用Python过滤相似文本的简单方法示例
Feb 03 Python
python区块链实现简版工作量证明
May 25 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
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
orm获取关联表里的属性值
2016/04/17 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
浅析用prototype定义自己的方法
2013/11/14 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
简述安装Slackware Linux系统的过程
2012/01/12 面试题
物业消防安全责任书
2014/07/23 职场文书
民族学专业求职信
2014/07/28 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang