首页 > 其他分享 >一个多线程任务流程控制

一个多线程任务流程控制

时间:2023-10-07 15:09:28浏览次数:35  
标签:__ target 流程 counter self threading 任务 多线程 cv

import threading


class Que_test:
    def __init__(self):
        # 创建条件变量和计数器
        self.cv = threading.Condition()
        self.counter = 1

    def first(self):
        with self.cv:
            print('first')
            self.counter += 1
            self.cv.notify_all()

    def second(self):
        with self.cv:
            while self.counter != 2:
                self.cv.wait()
            print('second')
            self.counter += 1
            self.cv.notify_all()

    def third(self):
        with self.cv:
            while self.counter != 3:
                self.cv.wait()
            print('third')
            self.counter += 1
            self.cv.notify_all()

    def fourth(self):
        with self.cv:
            while self.counter != 4:
                self.cv.wait()
            print('fourth')

    def maindo(self):
        threads = [
            threading.Thread(target=self.first),
            threading.Thread(target=self.second),
            threading.Thread(target=self.third),
            threading.Thread(target=self.fourth),
        ]
        for target in threads:
            target.start()
        for target in threads:
            target.join()


if __name__ == '__main__':
    t = Que_test()
    t.maindo()

作用:控制任务按序运行

使用方法:在print处修改成你的任务事件

运行截图:

一个多线程任务流程控制_按序

标签:__,target,流程,counter,self,threading,任务,多线程,cv
From: https://blog.51cto.com/u_16289206/7737553

相关文章

  • tita升级 | 绩效考核流程
    升级详情:Tita-OKR和新绩效一体化管理平台1.考核中新增同事评价人查看权限设置Q1:在哪新增?小T:发起考核活动时,可以设置同事评价人的查看权限。Q2:有何用途?小T:同事评价人默认不可见其他人的评价信息,可以自行设置同事评价人是否可见被考核人、其他同事或者上级评价人的评价内容......
  • 第一次git上传的完整流程
    第一次git上传的完整流程使用git简单命令上传代码push到远程仓库+简单介绍了一个.git文件结构。代码上传到gitee和github流程一样的,不过你上传到github可能网不行失败,所以我们使用gitee*前置说明你必须有git工具并且配置了环境变量。配置环境变量使用git会更方便。测......
  • 华为认证 | HCIE考试流程具体包含哪些?
    HCIE(华为认证网络工程师)是一项认可的网络专业认证,旨在评估个人在网络领域的高级知识和技能。获得HCIE认证需要通过一系列考试,因此在本文中,我们将详细介绍HCIE认证的考试流程,以帮助有兴趣追求该认证的人更好地了解相关内容。01HCIE认证概述首先,让我们简单了解一下HCIE认证的背景。H......
  • Java多线程详解
          线程对象是可以产生线程的对象。比如在Java平台中Thread对象,Runnable对象。线程,是指正在执行的一个指点令序列。在java平台上是指从一个线程对象的start()开始,运行run方法体中的那一段相对独立的过程。相比于多进程,多线程的优势有:   (1)进程之间不能共享数据,线......
  • 多线程编程
    多线程编程与资源同步1.基础  进程:一个进程代表计算机中实际运行的一个程序,在现代计算机操作系统的保护模式下,每个进程都具有自己独立的进程地址空间和上下文堆栈;进程并不负责执行进程代码,只是为程序提供一个大环境容器,进程中的实际执行体是线程(Thread),因此在一个进程中至......
  • [架构之路-25]:目标系统 - 系统软件 - bootloader uboot内存映射与启动流程
    原文:https://blog.csdn.net/HiWangWenBing/article/details/127062057目录第1章uboot概述1.1概述1.2内存映射(案例)1.3uboot在嵌入式系统启动中的位置第2章uboot启动流程(源码分析)2.1入口函数:_start2.3执行流程(文字描述)2.4初始化过程第3章uboot如何加载内核3.1v......
  • 同时多开窗口操作任务?实现效率倍增!
    在日常工作和生活中,有许多业务需要同时进行多个任务,比如跨境电商卖家或者营销人员等。通过多开窗口操作任务,可以提高工作效率和生产力。本文将讨论如何多开窗口同时操作业务,并且不会导致关联。哪些业务需要多开窗口操作任务?众所周知,现代社会的工作和生活节奏越来越快,人们常常需要同......
  • app直播源代码,JavaWeb如何设置定时任务
    app直播源代码,JavaWeb如何设置定时任务1.在xml文件中添加监听器 <?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • 【教程】IEEE 期刊从投稿到发表超详细全流程
    目录投稿Rebuttal出版投稿1、去IEEE上进相应的期刊首页,比如:IEEESensorsJournal|IEEEXplore2、点提交手稿2、没有账号就注册,有的话直接登录3、进入提交页面4、填信息即可。这一块网上好像是有教程的,不过光看内容,也是能理解的5、提交成功会收到邮件提醒6、提交后等通知,一般revie......
  • 多线程文件复制,断点继续复制
    ​1、思路多线程首先要对文件进行分割,这里使用每个子线程的任务大小固定的方法,根据文件大小分配不同数量的子线程。要实现断点下载,必须要记录已经复制的位置,每次继续时从上次下载的结束位置继续复制,这里将已经复制的文件位置以long类型写入一个日志文件,继续下载时每个线程从对......