python基础学习日志day9--线程event

一:线程event作用

  Python提供了Event对象用于线程间通信,它是线程设置的信号标志,如果信号标志位真,则其他线程等待直到信号结束。

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

  官方解释

  event是一个简单的同步对象;event表示内部标志和线程。可以等待标志设置,或设置或清除标志本身。

二:event使用

  1)event = threading.Event() 申明event实例 
  2)event.wait()。线程设置等待标志
  3)event.set()    如果设置了标志,则等待方法不执行任何操作
  4)event.clear() 如果标志已清除,等待将阻塞,直到它再次设置。

  任意数量的线程都可能等待相同的事件。

三:示例代码

  通过Event来实现两个或多个线程间的交互,下面是一个红绿灯的例子,即起动一个线程做交通指挥灯,生成几个线程做车辆,车辆行驶按红灯停,绿灯行的规则。

  

时间: 2024-10-02 00:34:11

python基础学习日志day9--线程event的相关文章

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

python基础学习日志day9--线程队列queue

一:线程queu作用 Python中,queue是线程间最常用的交换数据的形式. 队列两个作用:一个是解耦,一个是提高效率 二:语法 1)队列的类 class queue.Queue(maxsize=0) #先入先出 class queue.LifoQueue(maxsize=0) #last in fisrt out  class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列 优先级队列的构造函数.maxsize可以放置在队列中的项的最大个数.

python基础学习日志day5---logging模块

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,下面我们看一下怎么用. 最简单用法 1 2 3 4 5 6 7 8 import logging logging.warning("user [alex] attempt

python基础学习日志day8-异常处理

一.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面. 1)常用方式: try: pass except Exception as e: pass 一直尝试try中的代码,如果遇到错误和except中异常相同,就执行except中代码,如果和except没有相同,还是会抛出异常 # -*- coding:utf-8 -*- __author__ = 'shisanjun' names=['1','2','3'] data={} try:

python基础学习日志day7-类的反射

1)python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr, 改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. # -*- coding:utf-8 -*- __author__ = 'shisanjun' class Foo(object): def __init__(self): self.name="s" def func(self): return 'func' obj=Foo() #

python基础学习日志day8-SocketServer

摘要: SocketServer简化了网络服务器的编写.它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer.这4个类是同步进行处理的,另外通过ForkingMixIn和ThreadingMixIn类来支持异步. 创建服务器的步骤.首先,你必须创建一个请求处理类,它是BaseRequestHandler的子类并重载其handle()方法.其次,你必须实例化一个服务器类,传入服务器的地址和请求处理程序类.最后,调用handle_

python基础学习日志day7-类的起源

Python中一切事物都是对象. class Foo(object): def __init__(self,name): self.name = name f = Foo("alex") f对象是FOO类的一个实例,Foo类对象是type类的一个实例. print(type(f)) print(type(foo)) # -*- coding:utf-8 -*- __author__ = 'shisanjun' class Foo(object): def func(self): pri

python基础学习日志day5--re模块

常用正则表达式符号 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE) '$' 匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以 '*' 匹

python基础学习日志day5--subprocess模块

可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*           --废弃 commands.*      --废弃,3.x中被移除 以上执行shell命令的相关的模块和函数的功能均在 subprocess 模块中实现,并提供了更丰富的功能 call 父进程等待子进程完成返回退出信息(returncode,相当于Linux exit code) 执行命令,返回状态码,shell=True是表示