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正则表达式匹配ip地址实例
Oct 09 Python
基于Python的接口测试框架实例
Nov 04 Python
python如何去除字符串中不想要的字符
Jul 05 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
JS查找孩子节点简单示例
2019/07/25 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
详解Python发送邮件实例
2016/01/10 Python
用python找出那些被“标记”的照片
2017/04/20 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python中web框架的自定义创建
2019/09/08 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
初中科学教学反思
2014/01/21 职场文书
小学新学期寄语
2014/04/02 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫