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字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
Python的Django框架中的表单处理示例
Jul 17 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
python反转列表的三种方式解析
Nov 08 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
python数据处理之Pandas类型转换
Apr 28 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网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
利用Python开发微信支付的注意事项
2016/08/19 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
python实现电子产品商店
2019/02/26 Python
Python中函数的返回值示例浅析
2019/08/28 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
水利学院求职自荐书
2014/02/01 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
走进敬老院活动总结
2014/07/10 职场文书
房屋所有权证明
2014/10/20 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL