python高效编程技巧13(如何在线程之间实现事件通知)

来源:互联网 发布:淼说大数据精准营销 编辑:程序博客网 时间:2024/06/05 23:41

theading的Event使用的简单例子:

##############Event的使用说明###########################def f(e):    print "第一步:我在这里等你的通知 \n"    # 当线程t调用start方法后,因为传递过来的Event对象在这里调用了wait()方法,所以线程会卡在这里    e.wait()    print "第三步:好的,我开始执行。。。执行完毕!"e = Event()t = Thread(target=f, args=(e,))t.start()# 当调用了e的set()方法e.set()print "第二步:f方法你可以继续执行了"################Event的使用说明#########################

如何使用

#!/usr/bin/env python# -*- coding:utf-8 -*-from threading import Thread, Event'''线程间的事件通知,可以使用标准库中的Threading.Event1、等待事件一端调用wait,等待事件2、通知事件一端调用set,通知事件'''# io线程class motherThread(Thread):    def __init__(self, event):        # 要调用分类的构造器        Thread.__init__(self)        self.event = event    def run(self):        print "给我去买包盐"        self.event.wait()        print "好孩子,我做饭去了。。"# 创建一个boyThread,模仿小孩去买盐class boyThread(Thread):    def __init__(self, name, event):        Thread.__init__(self)        self.name = name        self.event = event    def run(self):        print "我是%s,买回了一包盐,给。。" % self.name        self.event.set()event = Event()mother = motherThread(event)mother.start()boy = boyThread("小明", event)boy.start()
原创粉丝点击