最近写程序要用到线程间通信,在网上搜了些资料,测试了一下代码,在这里总结一下。

Python实现线程间通信有几种方法,在这里介绍Event对象。

Event对象实现了简单的线程通信机制,它提供了设置信号、清除信号、等待等用于实现线程间的通信。

1.设置信号

使用Event对象的set()方法可以设置Event对象内部的信号标志为真。Event对象提供了isSet()方法来判断其内部信号标志的状态。当使用Event对象的set()方法后,isSet()方法返回真。

2.清除信号

使用Event对象的clear()方法可以清除Event对象内部的信号标志,即将其设置为假。当使用Event对象的clear()方法后,isSet()方法返回假。

3.等待

Event对象wait的wait()方法只有在其内部信号为真时才会很快地执行完成并返回。当Event对象的内部信号标志为假时,则wait()方法一直等到其为真时才返回。另外还可以向wait()方法传递参数,以设定最长等待时间。

测试代码如下:

from threading import *

event1 = Event()
event2 = Event()

def test1():
    for i in range(5):
        event1.wait()
        print currentThread().name, i
        event1.clear()
        event2.set()

def test2():
    for i in range(5):
        event2.wait()
        print currentThread().name, i
        event2.clear()
        event1.set()

Thread(target = test1).start()
Thread(target = test2).start()
event1.set()

运行代码结果为:

================================
>>> 
>>> Thread-1 0
Thread-2 0
Thread-1 1
Thread-2 1
Thread-1 2
Thread-2 2
Thread-1 3
Thread-2 3
Thread-1 4
Thread-2 4

python线程间通信方法之Event相关推荐

  1. python线程间通信_python多线程之事件触发(线程间通信)

    执行结果: 那么,通过分析执行结果来看,您已经体会到了其中的秘密.... 再脑补一下: Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位真,则其他线程等待直到信 ...

  2. python线程间通信

    """ 线程通信方法: 利用同步互斥机制(都是对共享资源的操作)多个线程对共享资源的操作代码称为临界区同步是一种协作关系,未完成操作,多进程或者线程之间形成一种协调,按照 ...

  3. 为什么重新new两个线程线程号相同_面试官每次问我关于线程间通信方法,我都回答的很糟糕...

    线程的生命周期 废话不多写.首先我们先回顾回顾,理解下线程的生命周期,以及不同的阶段的区别: 新建状态(NEW) 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配 ...

  4. python 线程间通信之Condition, Queue

    Event 和 Condition 是threading模块原生提供的模块,原理简单,功能单一,它能发送 True 和 False 的指令,所以只能适用于某些简单的场景中. 而Queue则是比较高级的 ...

  5. python 线程通信 会涉及到拷贝吗_Python如何实现线程间通信

    问题 你的程序中有多个线程,你需要在这些线程之间安全地交换信息或数据 解决方案 从一个线程向另一个线程发送数据最安全的方式可能就是使用 queue 库中的队列了.创建一个被多个线程共享的 Queue ...

  6. Python中的线程间通信

    Python中的线程间通信 文章目录 Python中的线程间通信 1.Queue 2.同步机制 1.Event 2.Semaphore(信号量) 3.Lock(锁) 4.RLock(可重入锁) 5.C ...

  7. 线程间通信的三种方法 (转)

    http://www.cnblogs.com/puxidun/archive/2009/12/06/1618142.html 线程间通信的三种方法 多线程通信的方法主要有以下三种:  1.全局变量 进 ...

  8. android线程间通信的几种方法_Android 技能图谱学习路线

    Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...

  9. [Python]线程实例化;互斥锁;线程间通信

    目录 1.使用threading创建线程 2.线程锁(互斥锁) 线程间通信 ----------到此,结束------------ 图穷匕见 1.使用threading创建线程 threading模块 ...

最新文章

  1. Chainlink平台预言机
  2. 解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender)
  3. 004-hadoop家族概述
  4. android文件读写
  5. 【原创】关于java中的lock
  6. 安卓手机浏览器排行_安卓手机性价比排行:小米10至尊纪念版仅排第三
  7. php 控制 打印机 打印尺寸_打破常规尺寸,得实推出宽幅条码标签单据打印机新品...
  8. VS2010插件 - NuGet
  9. 模型总结:最优化模型
  10. spring注解原理
  11. 中英文双标题latex
  12. 2021-1-16-JavaGuide老哥的操作系统常见问题总结 自己按照理解,综合了王道考研的视频,对内容进行了修改,增加了内容,以便于自己理解。这份材料不是背的,而是让自己去理解的。
  13. EMW3080+STC15轻松实现设备上云2(阿里云物联网平台、智能生活开放平台)
  14. 鲁棒局部均值分解 (RLMD)附Matlab代码
  15. 极客时间 - Vim学习
  16. 项目经理职业生涯的五道坎
  17. HDMI采集卡芯片方案
  18. css渐变描边视频,CSS制作渐变描边等文字特效
  19. Learning Generalisable Omni-Scale Representations for Person Re-Identification
  20. 成为云计算产品经理的前提

热门文章

  1. go操作redis之go-redis,python操作redis之redis
  2. CTF---Web---SQL注入---04---F12network+XXF伪造+sqlmap跑文件
  3. [九度][何海涛] 矩形覆盖
  4. 爱因斯坦个人不是神仙
  5. python随机点名程序 图形化_python写一个随机点名软件,python随机点名,最近有个随机点名软件...
  6. visio2019中文版(64位)
  7. office软件的发展前景_2020年中国远程办公软件行业市场现状及发展前景分析
  8. LLVM中的String相关
  9. json,反射实现对象转json
  10. “速课小龙”项目冲刺2