一、什么是事件

每执行一个事情,肯定有该事情的执行后状态,那事件就是该事情发生的信号

在程序中,多线程之间需要通讯,而事件就是方便线程之间的通讯

案例:

1.服务器启动需要5秒

2.客服端启动后去链接服务器

3.连接服务器必须保证服务器已经开启了

二、代码一

#使用全局变量来做判断
import time
from threading import Thread
boot = False
def server_task():
global boot
print("正在启动....")
time.sleep(5)
print("启动....成功")
boot = True def client_task():
while True:
print("连接服务器....")
time.sleep(1)
if boot:
print("连接成功")
break
else:
print("error 连接失败 服务器未启动!!") t1 = Thread(target=server_task)
t1.start() t2 = Thread(target=client_task)
t2.start() t1.join()
t2.join()

三、代码二

# 使用事件实现
#注意:event线程通讯仅仅用于简单的条件判断
#set()将状态修改为true
#wait()将状态修改为ture才继续执行下一步
import time
from threading import Thread,Event
event =Event() def server_task():
print("正在启动....")
time.sleep(5)
print("启动....成功")
event.set() def client_task():
event.wait() #一个阻塞的函数 会阻塞直到对event执行set函数为止
print("连接成功!") t1 = Thread(target=server_task)
t1.start()
t2 = Thread(target=client_task)
t2.start()

python处理多线程之间事件通讯方法的更多相关文章

  1. 【java】-- 多线程之间实现通讯

    1.多线程之间如何实现通讯 1.1.什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同. 画图演示 1.2.多线程之间通讯需求 需求:第一个线程写入(inpu ...

  2. java 中多线程之间的通讯之生产者和消费者 (多个线程之间的通讯)

    在真实开发 中关于多线程的通讯的问题用到下边的例子是比较多的 不同的地方时if 和while 的区别 如果只是两个线程之间的通讯,使用if是没有问题的. 但是在多个线程之间就会有问题 /* * 这个例 ...

  3. C#多线程之间事件通知

    我有两个线程,线程1接受网络数据,存到队列;线程2取队列,进行各种复杂的处理然后绘制到界面上;想让线程1有数据了通知线程2,线程2再取队列,因为不通知的话,线程2一直在while循环检索队列时候有东西 ...

  4. java 中多线程之间的通讯之等待唤醒机制

    wait notify () nitifyAll () 都使用在同步中,因为要对持有监视器(锁)的线程操作 所以要使用在同步中,因为只有同步才具有锁 为什么这些操作线程的方法要定义object类中呢 ...

  5. Prism的IEventAggregator事件聚合器, 事件订阅发布, ViewModel之间的通讯

    WPF中时常会遇到ViewModel之间的通讯,ViewModel并不知道自己的View,但是一个View发生的更改需要通知另外一个View. 举一个例子,软件界面上有个人信息,打开一个界面更改用户的 ...

  6. Python多线程的事件监控

    设想这样一个场景: 你创建了10个子线程,每个子线程分别爬一个网站,一开始所有子线程都是阻塞等待.一旦某个事件发生:例如有人在网页上点了一个按钮,或者某人在命令行输入了一个命令,10个爬虫同时开始工作 ...

  7. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析

    老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...

  8. PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析

    一. 概述 PyQt的图形界面应用中,事件处理类似于Windows系统的消息处理.一个带图形界面的应用程序启动后,事件处理就是应用的主循环,事件处理负责接收事件.分发事件.接收应用处理事件的返回结果, ...

  9. Python并发编程之创建多线程的几种方法(二)

    大家好,并发编程 进入第二篇. 今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础.学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章. 本文目录 学会使用函数创建多 ...

随机推荐

  1. 2019-4-12-WPF-类型的构造函数执行符合指定的绑定约束的调用时引发了异常

    title author date CreateTime categories WPF 类型的构造函数执行符合指定的绑定约束的调用时引发了异常 lindexi 2019-04-12 08:52:35 ...

  2. Linux 网络 tcp C/S通信模型

    C/S模型就是server 与 client 的模型 TCP服务器模型流程图                                                              ...

  3. 读书笔记五--numpy

    数组转置和轴对换 转置是重塑的一种特殊形式,返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性: arr=np.arange().reshape((, ...

  4. scip 练习2.18

    (define (append a b ) (if (null? a )b (cons (car a) (append (cdr a) b)))) (define (reverse l) (appen ...

  5. Yii2 : Active Record add Not In condition

    $query = MyModel::find()->where(['not in','attribute',$array]); 參考 Yii2 : Active Record add Not I ...

  6. Linkedlist 详解

    基本介绍 Linkedlist基于链表的动态数组(双向链表): 可以被当作堆栈(后进先出).队列(先进先出)或双端队列进行操作. 数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低, ...

  7. 字符串hash+回文树——hdu6599

    拖了很久才补的回文树,感觉网上的博客都是一个做法..回文树统计不同种类的回文串出现次数,然后用字符串hash来判每个回文子串是否符合要求 #include<bits/stdc++.h> u ...

  8. Delphi做异型窗体PNG透明

    {*******************************************************}{ }{ 异形窗口 }{ }{ 2009.12.4 王 锐 }{ }{******** ...

  9. 去除springboot内置tomcat

    /** * @author zx * @title: ServletInitializer * @projectName activiti * @description: 解决内置tomcat * @ ...

  10. 扩展BSGS-传送门

    很好的讲解:ZigZagK 好的讲解:mjtcn 某个模板:here 模板题: BSGS:ZigZagK的poj2417 exBSGS:ZigZagK的poj3243 — AC_Gibson 一般的板 ...