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获得一个月有多少天的方法
Jun 04 Python
基于python的七种经典排序算法(推荐)
Dec 08 Python
Python自动生产表情包
Mar 17 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
python实现二分类的卡方分箱示例
Nov 22 Python
Python基于pyecharts实现关联图绘制
Mar 27 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
python单元测试之pytest的使用
Jun 07 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执行zip与rar解压缩方法实现代码
2010/12/05 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
js修改input的type属性问题探讨
2013/10/12 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
django云端留言板实例详解
2019/07/22 Python
python如何统计代码运行的时长
2019/07/24 Python
python实现从wind导入数据
2019/12/03 Python
Python partial函数原理及用法解析
2019/12/11 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python编程的核心知识点总结
2021/02/08 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
澳大利亚网上书店:QBD
2021/01/09 全球购物
Python中如何定义一个函数
2016/09/06 面试题
财务管理职业生涯规划范文
2013/12/27 职场文书
十八大闭幕感言
2014/01/22 职场文书
培训班主持词
2014/03/28 职场文书
外贸业务员求职信
2014/06/16 职场文书
大学生实习证明范本
2014/09/19 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android