import multiprocessing
import os
import time
import random def copy_file(queue,file_name,source_folder_name,dest_folder_name):
f_read = open(source_folder_name+"/"+file_name,"rb")
f_write = open(source_folder_name+"/"+file_name,"wb")
while True:
time.sleep(random.random())
content = f_read.read(1024)
if content:
f_write.write(content)
else:
break
f_read.close()
f_write.close()
# 发送已经拷贝完毕的文件名字
queue.put(file_name) def main():
# 获取要复制的文件夹
source_folder_name = input("请输入要复制的文件夹名字:")
# 整理目标文件夹
dest_folder_name = source_folder_name + "副本"
# 创建目标文件夹
try:
os.mkdir(dest_folder_name)#创建文件夹
except:
pass
# 获取这个文件夹中所有的普通文件名
file_names = os.listdir(source_folder_name)
# 创建Queue
queue = multiprocessing.Manager().Queue()
# 创建线程池
pool = multiprocessing.Pool(3)
for file_name in file_names:
# 向线程池中添加任务
pool.apply_async(copy_file,args=(queue,file_name,source_folder_name,dest_folder_name))#不堵塞执行
# 主进程显示进度
pool.close() all_file_num = len(file_names)
while True:
file_name = queue.get()
if file_name in file_names:
file_names.remove(file_name) copy_rate = (all_file_num - len(file_names)) * 100 / all_file_num
print("\r%.2f...(%s)" % (copy_rate, file_name) + " " * 50, end="")
if copy_rate >= 100:
break
print() if __name__ == "__main__":
main()

2020-05-07

最新文章

  1. 对C++虚函数的理解
  2. RN的像素及布局
  3. Windows 下针对python脚本做一个简单的进程保护
  4. C++中复制构造函数与重载赋值操作符总结
  5. mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc区别
  6. 大数据基础Hadoop 2.x入门
  7. Linux 常用命令随笔(二)
  8. ant 小结
  9. ECMAScript2017之async function
  10. SQL Server 访问URL 调用WebServer
  11. phpcms 字符截取str_cut的使用
  12. linux下的下载之道
  13. C/C++UNION中包含STRUCT
  14. 基于OpenGL编写一个简易的2D渲染框架-05 渲染文本
  15. 【刷题】BZOJ 4031 [HEOI2015]小Z的房间
  16. SQL自定义排序 ORDER BY
  17. JAVA-MyEclipse第一个实例
  18. 迷你MVVM框架 avalonjs 1.2.6发布
  19. HDU2680 Choose the best route 2017-04-12 18:47 28人阅读 评论(0) 收藏
  20. Dijkstra 调度场算法 Python实现 一

热门文章

  1. 整合Lettuce Redis
  2. 6.29模拟赛 (T1:李时珍的皮肤衣 T2:马大嘴的废话 T3:SSY的队列 T4:清理牛棚);
  3. for循环与嵌套(水仙花数与三角形的打印)
  4. python面试题四:Python web框架
  5. celery 基础教程(一):工作流程,架构以及概念
  6. 数据可视化之DAX篇(五) 使用PowerBI的这两个函数,灵活计算各种占比
  7. CMDB04 /流程梳理、cmdb总结
  8. Zabbix 4.0 API 实践,主机/主机群组 批量添加模板和删除模板
  9. Java常用类-Object类
  10. redis linux开机启动 (简单高效)