Python基础之多线程事件Event

import threading,time
class Boss(threading.Thread):
    def run(self):
        print("BOSS:伙计们今晚上加班到22:00")
        event.set()
        time.sleep(5)  #模拟一个小时这段时间
        print("BOSS:22:00了可以下班了")
        event.set()
class Worker(threading.Thread):
    def run(self):
        event.wait() #等待event为真 此列是等待老板发话
        print("woker:命苦啊")
        time.sleep(1) #模拟工作中
        event.clear() #清除Event对象内部的信号标志,即将其设为假,此处等待领导发话
        event.wait()   #Event对象wait的方法只有在内部信号为真的时候才会很快的执行并完成返回。
        print("Woker:OhYeah")
if __name__=="__main__":
    event=threading.Event()
    threads=[]
    for i in range(5):
        threads.append(Worker())
    threads.append(Boss())
    for t in threads:
        t.start()
    for t in threads:
        t.join()

  

时间: 2024-10-07 18:02:53

Python基础之多线程事件Event的相关文章

python基础知识~多线程

一 分类   伪并发 由于执行速度很快,用户感知不到   真并发 同时发起并发   1 python调用的是操作系统的进程和线程,自身没有    2 一个应用程序默认只有一个进程(可以定义多个) 一个进程只有一个线程(可以定义多个)二 线程   1 python的多线程分为主线程和其他线程.主进程会在多个线程进行来回切换处理   2 python的线程是工作的最小单元   3 python的线程共享进程中的所有资源   4 python无法利用多核CPU实现多线程的,因为有锁的存在,同一时间只能

Python基础学习----多线程(一)

首先要了解进程VS线程这两个概念: 进程(Process):计算机中的程序关于某数据集合上的一次运行活动.例如打开2个记事本,那就是开启了2个进程. 线程(Thread):线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.进程中可能包含N个线程,例如打开Word编辑器,只是开了一个线程,但是要编辑,自动保存,拼写检查.打印等事情,就是进行了多线程. 因此实现多线程有以下3种方式: 1,多进程.(进程执行单线程,开启N个进程) 2,多线程.(一个

python基础之多线程

概念 进程:进程就是一个程序在一个数据集上的一次动态执行过程 程序:代码 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程的实体 进程是一个资源管理单元.线程是最小的执行单元 线程和进程的关系 (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程.(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源.(3)CPU分给线程,即真正在CPU上运行的是线程. 进程/线程切换原则:切换的操作者,操

python线程的同步事件Event

Event对象: 用于线程间的通信,某个线程需要根据其他线程的状态来判断自己的下一步操作. Event内部定义了一个全局变量:_flag,默认为False. 当_flag = False时,会阻塞当前线程的执行:_flag = True时,当前线程会继续执行. Event内部还定义了如下方法来操纵标志位: set() ——将_flag(标志位)设置为True: clear()——将_flag设置为False: is_set()——返回当前_flag的状态.等同于isSet(). wait()——

Python基础 - 多线程(上)

前面对 进程 一点认识, 通俗理解, 进程是操作系统(OS)进行资源调度分配的基本单元. 每个程序的至少就一个进程在OS中被"监控"着的哦. 然后围绕着多进程, 用消息队列共享全局变量, 守护主进程, 进程池...这一通探讨, 当然还是偏向应用的一方, 我自己偶尔工作有多任务的处理的地方, 也是优先弄多进程 (主要是公司电脑贼强, 我就要弄多进程, 就要浪费资源哈哈..). 进程 呢, 基本没用过, (爬虫除外, 之前有用 scrapy 是多线程的), 自己来手写应该是没有的. 为啥宁

python基础---多线程

多线程 1 线程: 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位 多线程: 多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源 1. 多线程共享一个进程的地址空间 2. 线程比进

秒杀多线程第六篇 经典线程同步 事件Event

阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇 一个经典的多线程同步问题> <秒杀多线程第五篇 经典线程同步关键段CS> 上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的"线程所有权"特性所以关键段只能用于线程的互斥而不能用于同步.本篇介绍用事件Event来尝试解决这个线程同步问题. 首先介绍下如何使用事件.事件Event实际上是个内核对象,它的使用非常方便.下面列出一些常用的函数. 第一个 CreateEvent 函数功能:创建事件 函数原

转--- 秒杀多线程第六篇 经典线程同步 事件Event

阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇 一个经典的多线程同步问题> <秒杀多线程第五篇 经典线程同步关键段CS> 上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的“线程所有权”特性所以关键段只能用于线程的互斥而不能用于同步.本篇介绍用事件Event来尝试解决这个线程同步问题. 首先介绍下如何使用事件.事件Event实际上是个内核对象,它的使用非常方便.下面列出一些常用的函数. 第一个 CreateEvent 函数功能:创建事件 函数原型: HANDLEC

[python] 专题八.多线程编程之thread和threading

就个人而言,学了这么多年的课程又写了这么多年的程序,虽然没有涉及到企业级的项目,但还是体会到了有几个知识点是非常重要的,包括:面向对象的思想.如何架构一个项目.设计模式来具体解决问题.应用机器学习和深度学习的方法,当然也包括我这篇文章的内容--多线程和并行化处理数据. 这篇文章主要是参考Wesley J. Chun的<Python核心编程(第二版)>书籍多线程部分,并结合我以前的一些实例进行简单分析.尤其是在大数据.Hadoop\Spark.分布式开发流行的今天,这些基础同样很重要.希望对你有