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下如何让web元素的生成更简单的分析
Jul 17 Python
python基于phantomjs实现导入图片
May 13 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
Python文件读写常见用法总结
Feb 22 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
pandas.cut具体使用总结
Jun 24 Python
python科学计算之narray对象用法
Nov 25 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
在js中使用"with"语句中跨frame的变量引用问题
2007/03/08 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python hashlib加密实现代码
2019/10/17 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
机电一体化求职信
2014/03/10 职场文书
保险经纪人求职信
2014/03/11 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
学校教研活动总结
2014/07/02 职场文书
辞职信怎么写?
2019/05/21 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫