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基础入门之seed()方法的使用
May 15 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
Python入门_浅谈for循环、while循环
May 16 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
Python 编程速成(推荐)
Apr 15 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
python利用while求100内的整数和方式
Nov 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
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
广告代码静态化js通用函数
2007/05/09 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
一份python入门应该看的学习资料
2018/04/11 Python
对Python 语音识别框架详解
2018/12/24 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
节约粮食标语
2014/06/18 职场文书
委托书的写法
2014/09/16 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
python实现层次聚类的方法
2021/11/01 Python
JavaScript实现优先级队列
2021/12/06 Javascript
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL
详解TypeScript的基础类型
2022/02/18 Javascript
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang