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实现全角半角转换的方法
Aug 18 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python实现的计数排序算法示例
Nov 29 Python
python3使用scrapy生成csv文件代码示例
Dec 28 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
python如何统计代码运行的时长
Jul 24 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
Python实现将多张图片合成MP4视频并加入背景音乐
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循环获取GET和POST值的代码
2008/04/09 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[01:04:09]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第二场 2月2日
2021/03/11 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python读取图片任意范围区域
2019/01/23 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python处理大日志文件
2019/07/23 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
陈欧广告词
2014/03/14 职场文书
超市理货员岗位职责
2014/07/04 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
SQLServer中exists和except用法介绍
2021/12/04 SQL Server