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的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
对Python中range()函数和list的比较
Apr 19 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
numpy数组之存取文件的实现示例
May 24 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
java关于string最常出现的面试题整理
Jan 18 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实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
python连接oracle数据库实例
2014/10/17 Python
Python字符串中查找子串小技巧
2015/04/10 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python selenium循环登陆网站的实现
2019/11/04 Python
python科学计算之narray对象用法
2019/11/25 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
导游词300字
2015/02/13 职场文书
个人年终总结范文
2015/03/09 职场文书
信息技术研修心得体会
2016/01/08 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
python使用torch随机初始化参数
2022/03/22 Python