美文网首页
python Event对象判断线程是否已经启动

python Event对象判断线程是否已经启动

作者: 孙广宁 | 来源:发表于2022-05-31 23:54 被阅读0次
12.2 我们加载了一个线程,如何知道它在什么时候启动
  • 线程的核心特征就是他们能够以非确定性的方式独立执行(即何时开始,何时被打断、合适终止、合适恢复执行完全由操作系统来调度管理)
  • 如果程序中有其它线程需要判断某个线程是否已经达到执行过程中的某个点,根据这个来判断后续的执行操作,那么这就产生了相对较为困难的线程同步问题,为了解决这类问题,我们可以使用threading库中的Event对象。
  • Event对象和条件标记类似,允许线程等待某件事情发生,初始状态时事件被设置为0,如果时间没有被执行而线程正在等待该事件,那么线程就会被阻塞即挂起,直到事件被设置为止。当线程设置了这个事件时,会唤醒所有正在等待该事件的线程。
from threading import Thread,Event
import time
def c(n,started_evt):
    print('countdown starting')
    started_evt.set()
    while n>0:
        print('T-minus',n)
        n -=1
        time.sleep(5)

started_evt =Event()

print("launching countdown")
t =Thread(target=c,args=(10,started_evt))
t.start()
started_evt.wait()
print("countdown is running")
  • 当这段代码运行时,字符串“countdown starting”总是会在“countdown isr unning”之后显示,这里使用了事件来同步线程,使得主线程在等待,知道c函数首先打印了信息后才开始执行
launching countdown
countdown starting
('T-minus', 10)
countdown is running
('T-minus', 9)
('T-minus', 8)
('T-minus', 7)
('T-minus', 6)
('T-minus', 5)
('T-minus', 4)
('T-minus', 3)
('T-minus', 2)
('T-minus', 1)

相关文章

  • python Event对象判断线程是否已经启动

    12.2 我们加载了一个线程,如何知道它在什么时候启动 线程的核心特征就是他们能够以非确定性的方式独立执行(即何时...

  • python 多线程 锁

    参考:《Python cookbook》12章 启动和停止线程 start 启动线程; is_alive 判断是否...

  • 线程的常用方法

    取得线程名称getName() 获得当前线程对象currentThread() 判断线程是否启动isAlive()...

  • 处理事件对象的兼容性

    1.window.event 首先判断时候有参数event对象传入,其次判断是否是IE的事件对象window.ev...

  • 最容易理解的线程池执行流程

    首先 , 当有任务时 , 看看线程池是否启动 , 启动则判断 线程数是否小于核心线程数 , 小于则执行任务 , 否...

  • Python isinstance

    Python isinstance对象判断在python中可以使用isinstance()来判断对象是否是一个类或...

  • Python线程事件Event

    今天来讲下Python线程事件Event的使用,Event的主要功能是用于线程间的通讯与同步。 Event有以下几...

  • Python多线程-Event(事件对象)

    Event 事件对象管理一个内部标志,通过set()方法将其设置为True,并使用clear()方法将其设置为Fa...

  • python停止线程?暂停?

    Python 通过threading.Event()产生一个event对象。event对象维护一个内部标志(标志初...

  • 并发编程之线程

    启动与停止线程 库可以在单独的线程中执行任何的在Python中可以调用的对象 当你创建好一个线程对象后,该对象并不...

网友评论

      本文标题:python Event对象判断线程是否已经启动

      本文链接:https://www.haomeiwen.com/subject/novtmrtx.html