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入门篇之对象类型
Oct 17 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
python对于requests的封装方法详解
Jan 03 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
Python随机数函数代码实例解析
Feb 09 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 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教程孙仲岳主讲
2008/01/07 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
js实现移动端轮播图
2020/12/21 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python中如何使用insert函数
2020/01/09 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
护士在校生自荐信
2014/02/01 职场文书
任命书范本大全
2014/06/06 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis