博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python线程event
阅读量:6565 次
发布时间:2019-06-24

本文共 1389 字,大约阅读时间需要 4 分钟。

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() #唤醒

  

  

转载于:https://www.cnblogs.com/alan-babyblog/p/5338146.html

你可能感兴趣的文章
iOS推送功能极光推送的介绍与实现
查看>>
单用户模式与grub加密
查看>>
Chromium Graphics: 3D上下文及其虚拟化 - Part I
查看>>
jquery javascript获得网页的高度和宽度
查看>>
2019 -2-15 复习
查看>>
vim锁定屏幕
查看>>
实用的 JavaScript 调试小技巧
查看>>
027移除元素
查看>>
Linux下清理内存和Cache方法
查看>>
CodeVS 1018 单词接龙(DFS)
查看>>
我的博客园的CSS和html设置
查看>>
工作中简单的kettle使用
查看>>
spark shuffle:分区原理及相关的疑问
查看>>
C#匿名委托
查看>>
Laravel5.5 使用第三方Vendor添加注册验证码
查看>>
06- Linux下sublime下载与使用
查看>>
前端文摘:Web 开发模式演变历史和趋势
查看>>
将图片序列转化为视频文件
查看>>
jQuery的文档操作***
查看>>
CODING Pages 服务全面升级,更快更稳更可靠!
查看>>