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中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
Jul 22 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
python 安装impala包步骤
Mar 28 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python调用JavaScript代码的方法
Oct 27 Python
Python os和os.path模块详情
Apr 02 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
基于simple_html_dom的使用小结
2013/07/01 PHP
php实现的CSS更新类实例
2014/09/22 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
详解javascript传统方法实现异步校验
2016/01/22 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
Django 多环境配置详解
2019/05/14 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
护士实习自我鉴定
2013/10/22 职场文书
心得体会怎么写
2013/12/30 职场文书
工地安全质量标语
2014/06/07 职场文书
新闻学专业求职信
2014/07/28 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
教师节主题班会方案
2015/08/17 职场文书
股东协议书范本2016
2016/03/21 职场文书
CSS3实现指纹特效代码
2022/03/17 HTML / CSS