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学生信息管理系统修改版
Mar 13 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
python抖音表白程序源代码
Apr 07 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
python能自学吗
Jun 18 Python
python3中TQDM库安装及使用详解
Nov 18 Python
python中类与对象之间的关系详解
Dec 16 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
Yii支持多域名cors原理的实现
2018/12/05 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
python list语法学习(带例子)
2013/11/01 Python
Python中的面向对象编程详解(上)
2015/04/13 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
python的链表基础知识点
2020/09/13 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
英国精品买手店:Browns Fashion
2016/09/29 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
家庭教育先进个人事迹材料
2014/01/24 职场文书
上课打牌的检讨书
2014/02/15 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
2014年库房工作总结
2014/11/26 职场文书
高校教师个人总结
2015/02/10 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript