from multiprocessing import Pool,Manager
import os
def copyFileTask(names,oldFolderName,newFolderName,queue): #打印文件的函数
fr = open(oldFolderName+"/"+names)
fw = open(newFolderName+"/" + names , "w")
content = fr.read()
fw.write(content)
fw.close()
fr.close()
queue.put(names) #进程之间通信,用于打印进度
def main():
oldFolderName = input("please input the name that you want to delete: ") #输入要拷贝的文件的名字
newFolderName = oldFolderName + "-复件"
os.mkdir(newFolderName) #创建新的文件夹
fileName = os.listdir(oldFolderName)
pool = Pool(5) #创建五个进程
queue = Manager().Queue()
for i in fileName:
pool.apply_async(copyFileTask,args=(i,oldFolderName,newFolderName,queue))
num = 0
allNum = len(fileName)
while(True):
queue.get()
num += 1
copyRate = num / allNum
print("\rcopy的进度是:%.2f%%"%(copyRate*100),end="")
if num == allNum:
break
if __name__ == "__main__":
main()
Python 实现多进程复制文件
最新推荐文章于 2023-04-25 12:52:22 发布