python进程池实现的多进程文件夹copy器完整示例

 更新时间:2019年11月27日 09:19:26   作者:lislislislislis  
这篇文章主要介绍了python进程池实现的多进程文件夹copy器,结合完整实例形式分析了Python基于多进程与进程池的文件操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了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数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 详解Python利用configparser对配置文件进行读写操作

    详解Python利用configparser对配置文件进行读写操作

    这篇文章主要介绍了详解Python利用configparser对配置文件进行读写操作,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • django使用django-apscheduler 实现定时任务的例子

    django使用django-apscheduler 实现定时任务的例子

    今天小编就为大家分享一篇django使用django-apscheduler 实现定时任务的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 简单介绍Python中的JSON使用

    简单介绍Python中的JSON使用

    这篇文章主要介绍了Python中的JSON使用,示例代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • Python 变量教程之打包和解包参数

    Python 变量教程之打包和解包参数

    这篇文章主要介绍了Python 变量教程之打包和解包参数,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • PyQt5 QFrame控件的用法详解

    PyQt5 QFrame控件的用法详解

    在PyQt5中,QFrame是一个重要的基类,它提供了边框样式、阴影效果、形状等属性,可以帮助开发者实现丰富多彩的界面效果,本文将结合实际案例,详细介绍QFrame在PyQt5中的用法,需要的朋友可以参考下
    2024-08-08
  • Python requests.post方法中data与json参数区别详解

    Python requests.post方法中data与json参数区别详解

    这篇文章主要介绍了Python requests.post方法中data与json参数区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 浅谈Python 递归算法指归

    浅谈Python 递归算法指归

    这篇文章主要介绍了浅谈Python 递归算法指归,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • pandas实现excel中的数据透视表和Vlookup函数功能代码

    pandas实现excel中的数据透视表和Vlookup函数功能代码

    今天小编就为大家分享一篇pandas实现excel中的数据透视表和Vlookup函数功能代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python中关于字符串对象的一些基础知识

    Python中关于字符串对象的一些基础知识

    这篇文章主要介绍了详解Python中的字符串对象,关于字符串的操作和特性是Python学习当中的基础知识,需要的朋友可以参考下
    2015-04-04
  • 解决阿里云邮件发送不能使用25端口问题

    解决阿里云邮件发送不能使用25端口问题

    这篇文章主要介绍了解决阿里云邮件发送不能使用25端口问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论