from multiprocessing import Pool,Manager
import os,time def copyFileTask(fileName,oldFolderName,newFolderName,queue):
fr = open(oldFolderName+"/"+fileName,'r',encoding='UTF-8')
fw = open(newFolderName+"/"+fileName,'w',encoding='UTF-8')
#复制
while True:
content = fr.read(1024)
if len(content) == 0:
break
fw.write(content)
#关闭文件
fr.close()
fw.close() queue.put(fileName) def main():
oldFolderName = 'test'#input("请输入要复制的文件夹名字:")
#创建目录
newFolderName = oldFolderName+"[复件]"
os.mkdir(newFolderName)
#获取文件列表
fileList = os.listdir(oldFolderName)
#使用多进程的方式复制
pool = Pool(5)
#消息队列
queue = Manager().Queue()
for file in fileList:
#copyFileTask(file,oldFolderName,newFolderName,queue)
pool.apply_async(copyFileTask,args=(file,oldFolderName,newFolderName,queue)) num = 0
total = len(fileList) while num<total:
queue.get()
num += 1
rate = num/total*100
print('\r复制的进度是:%.2f%%'%rate,end="") #关闭进程池,不再接受新的进程
#pool.close()
#主进程阻塞等待子进程的退出
#pool.join()
if __name__ == '__main__':
t_start = time.time()
main()
t_stop = time.time()
print("\n执行完毕,耗时%0.2f"%(t_stop-t_start))

单进程:

C:\Users\Administrator>python d:\python\copy.py

复制的进度是:100.00%

执行完毕,耗时6.53

多进程:

C:\Users\Administrator>python d:\python\copy.py

复制的进度是:100.00%

执行完毕,耗时6.59

多进程copy文件的更多相关文章

  1. 5 多进程copy文件

    1.如何进行开发? 2.版本1:程序大框架 #1.创建一个文件夹 #2.获取old文件夹中所有的文件名字 #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 3.版本2:创建一个文件夹 1 ...

  2. Cocos2d-x建工程时避免copy文件夹和库

    方法一:(官方做法) 打开F:\cocos2d-1.0.1-x-0.9.1目录下的cocos2d-win32.vc2010.sln文件,然后右键点击解决方案,选择"添加"—&quo ...

  3. Linux跨用户copy文件

    foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制,非owner用户或者同group用户无权限读写,除非是root ...

  4. Windows服务器Pyton辅助运维--01.自动Copy文件(文件夹)到远程服务器所在目录

    Windows服务器Pyton辅助运维 01.自动Copy文件(文件夹)到远程服务器所在目录 开发环境: u  Web服务器: Windows Server 2008 R2 SP1 IIS 7.5 u ...

  5. [转]Cocos2d-x建工程时避免copy文件夹和库

    原文链接:  http://www.cnblogs.com/andyque/archive/2011/09/27/2192920.html 在上一篇教程中,我们演示了如何使用VS2010来新建一个工程 ...

  6. 怎么从docker中copy文件到 本机

    怎么从docker中copy文件到 本机 docker cp <containerId>:/file/path/within/container /host/path/target

  7. php利用curl实现多进程下载文件类

    批量下载文件一般使用循环的方式,逐一执行下载.但在带宽与服务器性能允许的情况下,使用多进程进行下载可以大大提高下载的效率.本文介绍PHP利用curl的多进程请求方法,实现多进程同时下载文件. 原理: ...

  8. 从主机系统向虚拟机系统里面copy 文件

    从主机系统向虚拟机系统里面copy 文件: 一:请确保你的虚拟机里面安装了 VMTools 1:安装VMTools 2: 进入虚拟机系统里面,如果没有自动运行 VMtool安装程序,请打开我的电脑,手 ...

  9. Django多进程日志文件问题

    Django多进程日志文件问题 最近使用Django做一个项目.在部署的时候发现日志文件不能滚动(我使用的是RotatingFileHandler),只有一个日志文件. 查看Log发现一个错误消息:P ...

随机推荐

  1. Centos7.x Docker桥接网络

    基于Centos7.x构建Docker桥接网络, 配置bridge桥接网络可以直接设置网卡配置文件: 自定义桥接网络设置如下: 关掉docker0 ifconfig docker0 down 删除do ...

  2. 学JS的心路历程-Promise(三)

    今天我们来说then一些特殊情况以及Promise.all()与Promise.race(). 我们都知道函式作为参数传入时,可以参照的方式传入,也能传入时执行拿回传值作使用: function us ...

  3. .html() 与.text() 获取值、取值 区别

    1.html代码<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...

  4. flume kafka 配置指南

    1.官方网站也有配置: https://flume.apache.org/FlumeUserGuide.html#kafka-source 2.clodera 官方配置 https://www.clo ...

  5. Redis原子计数器incr

    一.前言在一些对高并发请求有限制的系统或者功能里,比如说秒杀活动,或者一些网站返回的当前用户过多,请稍后尝试.这些都是通过对同一时刻请求数量进行了限制,一般用作对后台系统的保护,防止系统因为过大的流量 ...

  6. Handling Event

    [Handling Event] 1.React events are named using camelCase 2.You must call preventDefault explicitly ...

  7. centos6.8下配置https服务器

    centos6.8下配置https服务器 1.1 环境 l  系统环境:内核环境为2.6.32版本  64位的CentOS release 6.8 (Final) [root@localhost ~] ...

  8. spring boot 中统一异常处理

    基于 spring boot 对异常处理的不友好,现在通过其他的方式来统一处理异常 步骤一:自定义异常类 public class UserNotExistException extends Runt ...

  9. SpringCloud报错:Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

    今天启动用eureka的服务消费者时,一直出现问题. SpringCloud报错: Caused by: org.springframework.context.ApplicationContextE ...

  10. NumPy 字节交换

    NumPy 字节交换 在几乎所有的机器上,多字节对象都被存储为连续的字节序列.字节顺序,是跨越多字节的程序对象的存储规则. 大端模式:指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地 ...