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单向链表的实现
Dec 24 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Python实现excel转sqlite的方法
Jul 17 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
用python实现学生管理系统
Jul 24 Python
Python生成九宫格图片的示例代码
Apr 14 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 Socket 编程
2010/04/09 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
js 操作符汇总
2014/11/08 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
《四季》教学反思
2014/04/08 职场文书
催款函范文
2015/06/24 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
python对文档中元素删除,替换操作
2022/04/02 Python