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中操作列表之List.append()方法的使用
May 20 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
python散点图实例之随机漫步
Aug 27 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
jupyter notebook 重装教程
Apr 16 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
查看keras的默认backend实现方式
Jun 19 Python
python实现磁盘日志清理的示例
Nov 05 Python
python的dict判断key是否存在的方法
Dec 09 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
第十四节 命名空间 [14]
2006/10/09 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
使用python制作一个解压缩软件
2019/11/13 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
工程专业应届生求职信
2014/02/19 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
Python基础之数据结构详解
2021/04/28 Python
小程序实现筛子抽奖
2021/05/26 Javascript