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语言的优雅之处
Jul 04 Python
用Python写一个无界面的2048小游戏
May 24 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
python2.7实现邮件发送功能
Dec 12 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
理解Python中的类与实例
2015/04/27 Python
Python判断字符串与大小写转换
2015/06/08 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
自主招生自荐信
2013/12/08 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
暑期培训心得体会
2014/09/02 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
端午节活动总结报告
2015/02/11 职场文书
贫困证明怎么写
2015/06/16 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js