# @Time : 2022/11/10 10:40
# @Author : 阿紫
# @File : 多进程复制文件.py
# @Description :
import multiprocessing
import os
def copy_file(old_folder_name,file_name,new_folder_name,queue):
"""复制文件"""
# 旧文件地址
old_path = open(old_folder_name + "/" + file_name, "rb")
# 新文件地址
new_path = open(new_folder_name + "/" + file_name, "wb")
while True:
content = old_path.read(1024)
if content:
new_path.write(content)
else:
break
old_path.close()
new_path.close()
queue.put(file_name)
def main():
# 获取旧文件的名字
old_folder_name = input("请输入待复制的文件名字:")
# 创建新文件
try:
new_floder_name = old_folder_name+"[附件]"
os.mkdir(new_floder_name)
except:
print("请重新输入文件名字!")
# 获取文件中所有目标文件
files = os.listdir(old_folder_name)
# print(files)
# 创建队列
queue = multiprocessing.Manager().Queue()
# 创建进程池
po = multiprocessing.Pool(3)
# 向进程池中添加目标文件
for file in files:
po.apply_async(copy_file,(old_folder_name,file,new_floder_name,queue))
po.close()
# po.join()
files_num = len(files)
num = 0
while True:
file_name = queue.get()
num += 1
print("\r拷贝进度为:%.2f%%" % (num * 100 / files_num),end="")
if num >= files_num:
break
if __name__ == "__main__":
main()
python 之多进程+队列复制
最新推荐文章于 2024-04-20 15:12:20 发布