zoukankan      html  css  js  c++  java
  • Python线程event

    python线程的事件用于主线程控制其他线程的执行,事件主要提供了三个方法wait、clear、set

    事件处理的机制:全局定义了一个“Flag”,如果“Flag”值为 False,那么当程序执行 event.wait 方法时就会阻塞,如果“Flag”值为True,那么event.wait 方法时便不再阻塞。

    • clear:将“Flag”设置为False
    • set:将“Flag”设置为True

    用 threading.Event 实现线程间通信
    使用threading.Event可以使一个线程等待其他线程的通知,我们把这个Event传递到线程对象中,
    Event默认内置了一个标志,初始值为False。
    一旦该线程通过wait()方法进入等待状态,直到另一个线程调用该Event的set()方法将内置标志设置为True时,
    该Event会通知所有等待状态的线程恢复运行。

    import threading 
    import time  
       
    class MyThread(threading.Thread):  
        def __init__(self, signal):  
            threading.Thread.__init__(self) 
            # 初始化 
            self.singal = signal  
               
        def run(self):  
            print "I am %s,I will sleep ..."%self.name  
            # 进入等待状态
            self.singal.wait()  
            print "I am %s, I awake..." %self.name  
               
    if __name__ == "__main__":
        # 初始 为 False 
        singal = threading.Event()  
        for t in range(0, 3):  
            thread = MyThread(singal)  
            thread.start()  
           
        print "main thread sleep 3 seconds... "  
        time.sleep(3)  
        # 唤醒含有signal, 处于等待状态的线程  
        singal.set()
    
    import threading
     
     
    def do(event):
        print 'start'
        event.wait()
        print 'execute'
     
     
    event_obj = threading.Event()
    for i in range(10):
        t = threading.Thread(target=do, args=(event_obj,))
        t.start()
     
    event_obj.clear() #继续阻塞
    inp = raw_input('input:')
    if inp == 'true':
        event_obj.set() #唤醒
    

      

      

  • 相关阅读:
    hadoop hdfs基本命令的java编码实现
    三维空间旋转和Three.JS中的实现
    Talk about VR
    Keras bug in model.predict
    How to compile tensorflow on CentOS
    熵(Entropy),交叉熵(Cross-Entropy),KL-松散度(KL Divergence)
    Two kinds of item classification model architecture
    Three failed attempts of handling non-sequential data
    How to setup Tensorflow inception-v3 model on Windows
    (译)三维空间中的几种坐标系
  • 原文地址:https://www.cnblogs.com/alan-babyblog/p/5338146.html
Copyright © 2011-2022 走看看