Python 学习笔记四---event的使用

Python提供了Event对象用于线程间通信,它是由线程设置的信号标志,如果信号标志位为假,则线程等待直到信号被其他线程设置成真。这一点似乎和windows的event正好相反。 Event对象实现了简单的线程通信机制,它提供了设置信号,清除信号,等待等用于实现线程间的通信。

1.设置信号

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

2.清除信号

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

3.等待

Event对象wait的方法只有在内部信号为真的时候才会很快的执行并完成返回。当Event对象的内部信号标志位假时,则wait方法一直等待到其为真时才返回。

可以使用Event让工作线程优雅地退出,示例代码如下:

# make thread exit nicely
class MyThread9(threading.Thread):
	def __init__(self):
		threading.Thread.__init__(self)

	def run(self):
		global event
		while True:
			if event.isSet():
				logging.warning(self.getName() + " is Running")
				time.sleep(2)
			else:
				logging.warning(self.getName() + " stopped")
				break;

event = threading.Event()
event.set()

def Test9():
	t1=[]
	for i in range(6):
		t1.append(MyThread9())
	for i in t1:
		i.start()
	time.sleep(10)
	q =raw_input("Please input exit:")
	if q=="q":
		event.clear()
if __name__=='__main__':
	Test9()
时间: 2024-10-13 01:49:04

Python 学习笔记四---event的使用的相关文章

Python学习笔记(四)

一.list创建 list 是Python语言中一种内置的数据类型 list 中可以存放不同类型的数据 list = []  #创建一个空列表 list = [1,2,3] #创建一个非空列表,并初始化其元素为1,2,3 二.list长度 使用 len(list_变量) 可以测得list的长度 三.list切片 list = [1,2,3,4,5,6,7,8,9,10] print(list[3:])  #4,5,6,7,8,9,10 print(list[3:5]) #4,5 print(li

python学习笔记(四):函数

一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 二.使用函数的好处: 1.简化代码2.提高代码的复用性3.代码可扩展 三.p

Python学习笔记四(迭代器、生成器、内置函数)

一.迭代器 1.迭代器定义 迭代是一个重复的过程,每次重复一次迭代,并且每次迭代的结果都是下一次迭代的初始值. l = ["aaa","bbb","ccc"] count = 0 while count< len(l): #每次重复完成后count都是下一次的初始值 print(l[count]) count+=1 需要迭代器的原因:对于序列类型str.list.tuple可以依赖索引迭代取值,对于dict.set.文件需要提供不依赖索引取

Python学习笔记四

参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 Python高级特性 一.切片 如果要取出一个列表或元组的部分元素,可以通过直接下标方法: lista=['apple','banana','cherry'] lista[0] lista[1] lista[2] 但如果要取再多个,或者前面(后面)多少个,或中间多少个,直接访问的方法就很不方便了. Python

[Python笔记]Python学习笔记四

模块 在Python中,一个.py文件就是一个模块(Module) 使用模块的好处就是大大提高代码的可维护性,并且可以被其他地方引用. 同时可以避免函数名和变量名的冲突. Package(包) 每个包目录下面必须有一个 __init__.py文件 这个文件可以是空的,这个文件对应模块名就是当前目录名即包名 模块的使用 Python内置了很多模块 #!/usr/bin/env python # -*- coding:utf-8 -*- # 编写一个属于自己的模块 # 文件的第一个字符串被视为模块的

python学习笔记(四) - 函数式编程

一. 高阶函数 高阶函数:把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式 def add(x, y, f): return f(x) + f(y) print add(-5, 6, abs) # 11 二.返回函数 aaa 三.匿名函数 aaa 四.装饰器 aaa 五.偏函数 aaa

Python学习笔记四--字典与集合

字典是Python中唯一的映射类型.所谓映射即指该数据类型包含哈希值(key)和与之对应的值(value)的序列.字典是可变类型.字典中的数据是无序排列的. 4.1.1字典的创建及赋值 dict1={} dict2={'name':John,'age':24} 使用dict()函数创建字典. dict()函数接受序列,或关键字参数作为参数创建字典.若不提供参数则创建空字典. dict1=dict([['x',1],['y',2]])#接受list作为参数创建字典 dict2=dict(x=1.y

Python学习笔记(四)Python对象类型及其运算

Python对象的相关术语: Python程序中保存的所有数据都是围绕对象这个概念展开的 程序中存储的所有数据都是对象 每个对象都有一个身份,一个类型和一个值 例如,school="MaGe linux"会以"MaGe linux"创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而school就是引用这个具体位置的名称 In [14]: name="herry" In [15]: id(name) Out[15]: 

python学习笔记四:字符串格式化

字符串格式化:%,左侧放字符串,右侧放希望被格式化的值,通常为元组 >>> format = "Hello, %s, %s enough for ya?" >>> values = ('world', 'Hot') >>> print format % values Hello, world, Hot enough for ya? 如果在格式化字符串里面包括百分号,那么必须使用%% 模板字符串:类似于shell中的变量替换 1)