python3中线程中event的小栗子

import threading, time

class Boss(threading.Thread):    def run(self):        print("boss:今晚大家都要加班到22:00")        print(event.isSet())        event.set()        time.sleep(5)        print("BOSS:<22:00>可以下班了")        print(event.isSet())        event.set()

class Worker(threading.Thread):    def run(self):        event.wait()        print("worker:哎,命苦呀")        time.sleep(1)        event.clear()        event.wait()        print("worker:OH yeah!")

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()

#https://www.cnblogs.com/nuomin/p/7899675.html#https://www.cnblogs.com/zhangxinqi/p/8284687.html

运行结果:

F:\Scrapy\spider3\Scripts\python.exe F:/Django1/spider3/threading3.py
boss:今晚大家都要加班到22:00
False
worker:哎,命苦呀
worker:哎,命苦呀
worker:哎,命苦呀
worker:哎,命苦呀
worker:哎,命苦呀
BOSS:<22:00>可以下班了
False
worker:OH yeah!
worker:OH yeah!
worker:OH yeah!
worker:OH yeah!
worker:OH yeah!

Process finished with exit code 0

原文地址:https://www.cnblogs.com/qingsheng/p/9617265.html

时间: 2024-10-25 05:07:17

python3中线程中event的小栗子的相关文章

java中线程中的相关知识点

(1)守护线程必须在线程start前设置(2)守护线程在所有用户线程结束后,也会终止(3)由于(2)所有守护线程不能执行一些读写操作,原因:如果守护线程在执行读写操作时,如果用户线程结束了,守护线程的读写操作还没结束,但仍要被会被终止,此时会导致数据不完整性 http://www.imooc.com/video/6309 http://www.imooc.com/video/4877

【iOS开发每日小笔记(九)】在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下.其实,90%的作用是帮助自己回顾.记忆.复习. 一直想写一篇关于runloop学习有所得的文章,总是没有很好的例子.正巧自己的上线App Store的小游戏<跑酷好基友>(https://itunes.apple.com/us/app/pao-k

线程中的WaitForSingleObject和Event的用法

http://chinaxyw.iteye.com/blog/548622 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号,不发信号. SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号. WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回,OBJEC

一个解决在其它的线程中访问UI 异常的小方法

写 WPF 的童鞋可能都会碰到 在子线程中访问 UI 异常的问题.这是为了防止数据不一致做的安全限制. 子线程中更新UI还要交给主线程更新,引用满天飞,实在是麻烦. 接下来,我们推出一个可以称之为框架的解决方案(拍砖的时候轻点). 一:解决判断当前线程是主线成的问题 在 C# 中 微软好像没有给出直接判断当前线程是否是主线程的方案,至少我是没找到. /// <summary> /// Lyx 线程框架 类 /// </summary> public class LyxThreadF

在多个线程中使用QNetworkAccessManager

最近发现Tangram发出了URL request, 但是却收不到URL reponse 经研究后发现这是一个线程问题: Tangram会在多个线程发送URL request, 但是在实现时, 却没有考虑线程问题, 程序在运行时得到如下warning: QObject: Cannot create children for a parent that is in a different thread. (Parent is QNetworkAccessManager(0x21dcba0), pa

网络操作不能直接写在主线程中 以及 为什么不能在子线程中更新UI控件的属性

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //注意: 所有网络操作不能直接写在主线程中 因为所有的网络操作都是耗时的,如果加载到主线程中,会导致与用户的交互出现问题 ,所以要加载到子线程中 // [self loadImage]; [self performSelectorInBackground:@selector(loadImage) withObject:nil]; } //加

TMsgThread, TCommThread -- 在delphi线程中实现消息循环(105篇博客,好多研究消息的文章)

在delphi线程中实现消息循环 在delphi线程中实现消息循环 Delphi的TThread类使用很方便,但是有时候我们需要在线程类中使用消息循环,delphi没有提供. 花了两天的事件研究了一下win32的消息系统,写了一个线程内消息循环的测试. 但是没有具体应用过,贴出来给有这方面需求的DFW参考一下.希望大家和我讨论. {----------------------------------------------------------------------------- Unit

[转载]DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁

(转载于breaksoftware的csdn博客) 之前的几篇文章已经讲解了在DllMain中创建并等待线程导致的死锁的原因.是否还记得,我们分析了半天汇编才知道在线程中的死锁位置.如果对于缺乏调试经验的同学来说,可能发现这个位置有点麻烦.那么本文就介绍几个例子,它们会在线程明显的位置死锁掉. DLL中的代码依旧简单.它获取叫EVENT的命名事件,然后等待这个事件被激活.激活的操作自然放在线程中.这次我们不用在DLL中创建线程,而是在Exe中创建. switch (ul_reason_for_c

关于Java中线程池的解读

之前的面试中多次被问到线程池的相关内容,所以在之后的时间内我仔细的学习了一下线程池的相关内容. 1.使用线程池的意义 复用:类似WEB服务器等系统,长期来看内部需要使用大量的线程处理请求,而单次请求响应时间通常比较短,此时Java基于操作系统的本地调用方式大量的创建和销毁线程本身会成为系统的一个性能瓶颈和资源浪费.若使用线程池技术可以实现工作线程的复用,即一个工作线程创建和销毁的生命周期期间内可以执行处理多个任务,从而总体上降低线程创建和销毁的频率和时间,提升了系统性能. 流控:服务器资源有限,