iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >多任务拷贝小案例
  • 310
分享到

多任务拷贝小案例

案例 2023-01-30 23:01:32 310人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

使用到:   进程池(重复利用进程),队列(用于进程间的通信,显示进度) 功能:   拷贝文件夹下的所有文件,显示进度 注意:   如涉及到进程池同时需要使用到队列,使用multiprocessing.Manager().Queue(),

使用到:

  进程池(重复利用进程),队列(用于进程间的通信,显示进度)

功能:

  拷贝文件夹下的所有文件,显示进度

注意:

  如涉及到进程池同时需要使用到队列,使用multiprocessing.Manager().Queue(),而非multiprocessing.Queue()

 

import os
import multiprocessing


def copy_file(q, file_name, old_folder_name, new_folder_name):
    """完成文件的copy"""
    # print("=====>模拟copy文件 %s--->%s 文件名是:%s" % (old_folder_name, new_folder_name, file_name))
    old_f = open(old_folder_name + "/" + file_name, "rb")
    content = old_f.read()
    old_f.close()

    new_f = open(new_folder_name + "/" + file_name, "wb")
    new_f.write(content)
    new_f.close()

    # 如果拷贝完了文件,那么就向队列中写入一个消息,表示已经完成
    q.put(file_name)


def main():
    # 1.获取用户要copy的文件夹的名字
    old_folder_name = input("请输入要copy的文件夹的名字:")

    # 2.创建一个新的文件夹
    new_folder_name = old_folder_name + "[复件]"
    try:
        os.mkdir(new_folder_name)
    except:
        pass

    # 3.获取文件夹的所有的待copy的文件夹名字 listdir()
    file_names = os.listdir(old_folder_name)
    # print(file_names)

    # 4.创建进程池
    po = multiprocessing.Pool(2)

    # 5.创建一个队列
    q = multiprocessing.Manager().Queue()

    # 6.向进程池中添加cpoy文件的任务
    for file_name in file_names:
        po.apply_async(copy_file, args=(q, file_name, old_folder_name, new_folder_name))

    po.close()
    # 让主进程无线循环的去获取进度,故将join()注释
    # po.join()

    # 获取所有文件的个数
    all_file_num = len(file_names)
    copy_ok_num = 0
    while True:
        file_name = q.get()
        # print("已经完成copy:%s" % file_name)
        copy_ok_num += 1
        print("\r拷贝进度:%.2f%%" % (copy_ok_num/all_file_num*100), end="")
        if copy_ok_num >= all_file_num:
            break

    print()


if __name__ == '__main__':
    main()

 

--结束END--

本文标题: 多任务拷贝小案例

本文链接: https://www.lsjlt.com/news/181101.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 多任务拷贝小案例
    使用到:   进程池(重复利用进程),队列(用于进程间的通信,显示进度) 功能:   拷贝文件夹下的所有文件,显示进度 注意:   如涉及到进程池同时需要使用到队列,使用multiprocessing.Manager().Queue(),...
    99+
    2023-01-30
    案例
  • Java ScheduledExecutorService定时任务案例讲解
    一、ScheduledExecutorService 设计思想 ScheduledExecutorService,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线...
    99+
    2024-04-02
  • Java之SpringBoot定时任务案例讲解
    1. SpringBoot--任务:定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候, 分析一次前一天的日志信息,Spring为我们提供了异步执行任务调度的...
    99+
    2024-04-02
  • Python 多线程处理任务实例
    目录美餐每天发一个用Excel汇总的就餐数据,我们把它导入到数据库后,行政办公服务用它和公司内的就餐数据进行比对查重。 初始实现是单线程,和import_records去掉多线程后的...
    99+
    2024-04-02
  • Python实现多任务进程示例
    目录一、进程介绍二、线程和进程之间的对比三、Python 实现多进程四、进程之间的通信五、进程池之间的通信六、案例:文件批量复制一、进程介绍 进程:正在执行的程序,由程序、数据和进程...
    99+
    2024-04-02
  • springboot项目使用SchedulingConfigurer实现多个定时任务的案例代码
    目录一、引入依赖二、配置文件属性配置三、代码目录结构四、示例代码4.1、定义 定时任务基础接口4.2、定义 定时任务一(每天几点几分执行)4.3、定义 定时任务二(每几分钟执行一次)...
    99+
    2023-01-05
    springboot多个定时任务 springboot使用SchedulingConfigurer
  • keras多任务多loss回传的示例分析
    这篇文章将为大家详细讲解有关keras多任务多loss回传的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如果有一个多任务多loss的网络,那么在训练时,loss是如何工作的呢?比如下面:mode...
    99+
    2023-06-15
  • Linux下实现Mysql定时任务的案例
    小编给大家分享一下Linux下实现Mysql定时任务的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!假设前提:每天晚上10点...
    99+
    2024-04-02
  • Java并行执行任务的几种方案小结
    目录背景改进方案注意点和区别java并行执行任务demo背景 最近在排查生产环境问题,发现商品详情接口时不时会报RPC调用超时,检查代码发现接口里面查询活动耗时比较长,都是串行执行的...
    99+
    2024-04-02
  • Java任务定时执行器案例的实现
    目录⭐️前面的话⭐️1.定时器概述1.1认识定时器1.2Timer类的使用2.定时器的简单实现⭐️前面的话⭐️ 本篇文章将介绍Java多线程案例,定时器,定时器就像闹钟一样,等到了指...
    99+
    2024-04-02
  • SpringBoot定时任务多线程实现示例
    测试Spring Boot定时任务冲突时,使用的线程数量 引入依赖: Spring Boot 2.6.1 <dependency> <group...
    99+
    2024-04-02
  • 详解SpringBoot开发案例之整合定时任务(Scheduled)
    来来来小伙伴们,基于上篇的邮件服务,定时任务就不单独分项目了,天然整合进了邮件服务中。不知道,大家在工作之中,经常会用到那些定时任务去执行特定的业务,这里列举一下我在工作中曾经使用到的几种实现。任务介绍 Java自带的java.util....
    99+
    2023-05-31
    spring boot 定时任务
  • Python多任务版静态Web服务器实现示例
    目录概述实现步骤1.导入threading模块2.设置端口号复用, 程序退出端口立即释放3.当客户端和服务器建立连接程,创建子线程4.设置守护主进程5.启动子线程代码实现概述 使用多...
    99+
    2024-04-02
  • iOS开发探索多线程GCD任务示例详解
    目录引言同步任务死锁异步任务总结引言 在上一篇文章中,我们探寻了队列是怎么创建的,串行队列和并发队列之间的区别,接下来我们在探寻一下GCD的另一个核心 - 任务 同步任务 void ...
    99+
    2024-04-02
  • SpringBoot定时任务设计之时间轮案例原理详解
    目录知识准备什么是时间轮(Timing Wheel)Netty的HashedWheelTimer要解决什么问题HashedWheelTimer的使用方式实现案例Pom依赖2个简单例子...
    99+
    2024-04-02
  • Python画图小案例之多啦A梦叮当猫超详细注释
    一步步教你怎么用Python画多啦A梦叮当猫,进一步熟悉Python的基础画图操作。 分析:叮当猫由头、脸、眼、眼珠、鼻子、嘴、胡子、项带、铃当、身子、围嘴、手臂、手、脚组成。&nb...
    99+
    2024-04-02
  • k8sJob执行一次性以及批处理任务使用场景案例
    目录前言Job 是什么Job 的一些使用场景Job 控制器Job Spec 格式定义Job pod 自动清理暂停和重启 Job案例讲解使用 Job 的注意事项总结前言 Job 类型...
    99+
    2023-05-15
    k8s Job 执行一次性批处理 k8s Job 任务执行处理
  • springBoot项目集成quartz开发定时任务案例及注意事项
    目录quartz下载、安装实战案例常见问题及解决方案quartz下载、安装 Quartz是完全由java开发的一个开源的任务日程管理系统,任务进度管理器就是一个在预先确定的时间到达时...
    99+
    2024-04-02
  • @Scheduled注解不能同时执行多个定时任务的解决方案
    目录@Scheduled注解不能同时执行多个定时任务@Scheduled同时执行多个定时任务所导致的并发问题@Scheduled的执行顺序@Scheduled同步控制定时任务的执行顺...
    99+
    2024-04-02
  • Spring定时任务中@PostConstruct被多次执行异常的示例分析
    这篇文章主要介绍Spring定时任务中@PostConstruct被多次执行异常的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!发现问题最近在项目中刚刚修改一个功能,代码正准备验证,启动Idea的debug模...
    99+
    2023-05-30
    spring @postconstruct
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作