多进程copy文件

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

原文地址:http://blog.51cto.com/fonyer/2059256

时间: 2024-11-10 01:25:02

多进程copy文件的相关文章

5 多进程copy文件

1.如何进行开发? 2.版本1:程序大框架 #1.创建一个文件夹 #2.获取old文件夹中所有的文件名字 #3.使用多进程的方式copy原文件夹中的所有文件到新文件夹中 3.版本2:创建一个文件夹 1)ipython3 获取小知识点 2)写程序 3)测试程序 4)版本2:程序 import os #1.创建一个文件夹 old_file_name = input("请输入你要copy的文件夹:") new_file_name = old_file_name + "-附件&quo

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

Windows服务器Pyton辅助运维 01.自动Copy文件(文件夹)到远程服务器所在目录 开发环境: u  Web服务器: Windows Server 2008 R2 SP1 IIS 7.5 u  运维服务器: Python 2.7.8 组件:pywin32(219)  wmi(1.4.9) 工作内容说明: 生产环境中有很多台Web服务器,均为IIS环境,每次开发人员都提供站点补丁包给我进行系统升级,我需要将这些补丁包更新到所有Web服务器的指定目录下以完成系统更新的工作. 实现过程: 整

linux下多进程的文件拷贝与进程相关的一些基础知识

之前实现了用文件IO的方式可以实现文件的拷贝,那么对于进程而言,我们是否也可以实现呢? 答案是肯定的. 进程资源: 首先我们先回顾一下,进程的运行需要哪些资源呢?其资源包括CPU资源,内存资源,当然还有时间片资源,我们都知道进程是有 栈, 堆,  只读数据段,  数据段(已初始化的全局变量静态变量),bss段(未初始化的),   代码段还有一组寄存器值. 进程命令: 另外我们也可以通过 ps  -ef |grep 进程名命令来查看进程号(PID)和父进程号(PPID),之后还可以通过 ps au

Linux跨用户copy文件

foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制,非owner用户或者同group用户无权限读写,除非是root(至高无上的root).如果没有root权限,有什么办法把file.txt 复制到bar用户的home目录下呢? 解决方法: 第一个办法,先用foo用户登录,把文件copy到系统临时目录/tmp,然后切换到bar用户,再从系统临时目录/tmp把文件copy到自己的home目录.这里为什么用cp不用m

解决 Mac OS X 11无法copy文件问题

1.升级Mac OS X 11之后,想要copy文件到系统目录下. sudo cp -f test.txt /usr/bin/ 2.发现即使用权限sudo,也有权限问题. cp: /usr/bin/test: Operation not permitted 3.原因是升级Mac OS X 11之后El Capitan 加入了Rootless机制,不再能在随便编辑更何路径了,即使设置 root 权限也不可以. ps:Rootless机制是用来抵抗恶意程序的. 4.bin目录下的拷贝需要关闭Root

golang中copy文件时,buffer设多大值合适,性能对比

在go语言中,copy文件时,大文件使用buffer缓冲,可以明显加快时间, 但这个值多大合适呢? 除了考虑计算机的硬件资源,还要考虑CP文件的大小. 如果都是100m之内的小文件,一次CP完就可以. 但如果文件大于1G,建设还是设置一个大一些的缓冲来操作. copy.go func Copy(src, dst string, BUFFERSIZE int64) error { sourceFileStat, err := os.Stat(src) if err != nil { return

dos 批量copy文件

#rem 列出子目录文件绝对路径名到aa.txt dir "E:\IBM\BB\" /b /s >aa.txt 循环读取文件并copy到指定目录 for /f "delims=" %%i in (aa.txt) do copy "%%i" E:\IBM\BB\ pause

linux两台server远程copy文件

1.将远程机器的文件copy到本地 scp -r  [email protected]:/bea   /gg   将远程的/bea copy到/gg以下 -r  Recursively copy entire directories. 递归复制整个文件夹 [email protected]:/bea 远程机器的文件夹 /gg 本地文件夹 2.将本地的文件copy到远程 scp -r  /bea/oracle [email protected]:/bea  /gg 3.假设远程server防火墙有

Windows下用Python你会几种copy文件的方法?

1. [代码]1. os.system ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import os import tempfile filename1 = tempfile.mktemp (".txt") open (filename1, "w").close () filename2 = filename1 + ".copy" print filename1, &qu