#!/usr/bin/evn python

#Author:ELSON_ZENG

import os,time

import multiprocessing

def copy_file(queue, file_list, old_folder_name, new_folder_name ):

"""完成文件的复制"""

#print("===>copy文件:从%s ---> %s 文件名是:%s" %(old_folder_name, new_folder_name,file_list))

f_read = open(os.path.join(old_folder_name,file_list),'rb')

f_write = open(os.path.join(new_folder_name,file_list),'wb')

while True:

content = f_read.read(1024)

if content:

f_write.write(content)

else:

break

f_write.close()

f_read.close()

#拷贝完文件,那么就想队列中写入一个消息

queue.put(file_list)

def main():

#1、获取用户要copy的文件夹的名字

old_folder_name = input("请输入要copy的文件夹名字:")

proccess_num = int(input("请输入要开启的进程数量:"))

#2、创建一个新的文件夹

try:

new_folder_name = old_folder_name + '_RS'

os.mkdir(new_folder_name)

except:

pass

#3、获取文件夹的所有的待copy的文件名字 listdir()

file_lists = os.listdir(old_folder_name)

#4、创建进程池

p = multiprocessing.Pool(proccess_num)

# 5、 创建队列

queue = multiprocessing.Manager().Queue()

#5、向进程池中添加copy文件的任务

for file_list in file_lists:

p.apply_async(copy_file, args=(queue, file_list, old_folder_name, new_folder_name ))

print('-----start-----')

p.close()

start_time = time.time()

#p.join()

file_num = len(file_lists)

copy_num = 0

while True:

file_name = queue.get()

copy_num += 1

stop_time = time.time()

print('\r拷贝进度为 %.2f %%, 总耗时 %d 秒。' %(copy_num/file_num*100,stop_time - start_time),end = '')

if file_num == copy_num:

break

print('\n-----stop------')

if __name__ == "__main__":

main()

python3多进程写时拷贝_python利用进程池,多进程拷贝文件相关推荐

  1. 利用进程池多进程爬取人人车信息

    下面例子是爬取人人车车辆信息. 多线程/多进程:提高代码的执行效率,放在爬虫中就是提高爬取效率.因为可以使用多个进程同时对多个页面发起请求.from urllib.request import url ...

  2. python3多进程写时拷贝_Python实现多进程的详解(附示例)

    本篇文章给大家带来的内容是关于Python实现多进程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. fork函数创建子进程 基本使用 Linux 操作系统提供了一个 ...

  3. python3多进程写时拷贝_python多进程实现复制文件

    [Python] 纯文本查看 复制代码''' 多进程实现复制文件 步骤: (1)获得源文件夹路径: (2)获取源文件夹下各文件的文件名 (3)获得目标文件夹 (4)复制文件(文件夹不能复制) 新增内容 ...

  4. python进程池的实现原理_Python基于进程池实现多进程过程解析

    1.注意:pool必须在 if __name__ == '__main__' 下面运行,不然会报错 2.多进程内出现错误会直接跳过该进程,并且默认不会打印错误信息 3.if__name__下面的数据需 ...

  5. python并行计算进程池通信_Python使用进程池管理进程和进程间通信

    与线程池类似的是,如果程序需要启动多个进程,也可以使用进程池来管理进程.程序可以通过 multiprocessing 模块的 Pool() 函数创建进程池,进程池实际上是 multiprocessin ...

  6. python部落翻译_python利用google翻译 翻译字幕文件

    python使用谷歌翻译api 翻译字幕文件 英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googlet ...

  7. Python进程池Pool的使用

    1.进程池Pool 需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到m ...

  8. 进程共享(读时共享写时复制)

    父子进程之间在刚fork后.父子相同处: 全局变量..data..bbs..text.栈.堆.环境变量.用户ID.宿主目录(进程用户家目录).进程工作目录.信号处理方式等等,即0~3G的用户空间是完全 ...

  9. Python3.5 queue 模块详解 和 进程间通讯

    queue - A synchronized queue class:https://docs.python.org/3/library/queue.html 菜鸟教程 - Python3 多线程:h ...

最新文章

  1. 北大高材生割美国韭菜被FBI通缉?本人回应予以否认
  2. python 网页解析库 beautifulsoup4 简介
  3. autosys start_mins
  4. spectral hashing--谱哈希源码解析
  5. Js获取短信验证码前段效果
  6. Linux与时间相关的结构体及相关用法
  7. Java 答疑:编译器和解释器有何区别?Java 语言属于编译型编程语言还是解释型编程语言?
  8. Java笔记-解决java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to
  9. 了解库开发,我们从STM32标准库开发学起
  10. powershell一行代码批量修改文件名(附命令详解)
  11. 关于vue2用vue-cli搭建环境后域名代理的http-proxy-middleware解决api接口跨域问题
  12. shell多线程执行ping
  13. 初涉springboot(一)
  14. RT-Thread源码学习第六篇,线程调度器(1)
  15. 常用的 T-SQL 语言
  16. 强大的RSS阅读器 Reeder 4 for Mac 4.1.1
  17. https://www.cnblogs.com/skywang12345/category/455711.html
  18. MATLAB图像灰度图处理
  19. #创建虚拟机器人URDF模型
  20. 观远数据苏春园:五年AI+BI路,数智化破局中的变与不变|数据猿采访

热门文章

  1. 你竟然在公钥中下毒!——如何在RSA公钥中添加后门
  2. Java 中自定义时间格式
  3. JPA与Hibernate的优缺点
  4. A加载B,B发生的变化
  5. Eclipse的代码补全方法可以实现psvm和sout
  6. python爬虫之协程理解爬取照片的简单版
  7. 报告PPT--Python程序设计,不仅仅是学习编程(35页)
  8. 微课|中学生可以这样学Python(例5.3):报数游戏
  9. Python使用turtle绘制函数y=9-x^2的图像
  10. Python+pandas读取Excel文件并统计演员参演电影数量