python多线程threading事件对象event实现线程阻塞及timer时间对象

本文介绍了Python多线程中threading模块的Event对象和Timer对象。Event对象用于线程间简单通信,通过is_set、set、clear和wait方法实现线程阻塞。Timer对象则能在指定时间后执行特定函数,支持start和cancel方法来启动和取消定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件对象:
可以用于简单的进程之间的通信,当线程需执行其他操作时,阻塞线程
class threading.Event

1.is_set() / isSet()
2.set()
3.clear()
4.wait([timeout])

示例:

# encoding: UTF-8
import threading
import time

event = threading.Event()

def FunEvent():
    print '%s -- %s start wait ...' % (time.ctime(),threading.currentThread().getName())
    event.wait()
    print '%s -- %s end wait ...' % (time.ctime(), threading.currentThread().getName())

def bet_fun():
    print '%s enter bet_fun '%time.ctime()
    time.sleep(1)
    print '%s out bet_fun ' % time.ctime()

Th1 = threading.Thread(target=FunEvent,name="Th-1")
Th2 = threading.Thread(target=FunEvent,name="Th-2")
Th1.start()
Th2.start()

time.sleep(1)

bet_fun()
event.set()

结果:

Sun May 28 23:25:12 2017 -- Th-1 start wait ...
Sun May 28 23:25:12 2017 -- Th-2 start wait ...
Sun May 28 23:25:13 2017 enter bet_fun 
Sun May 28 23:25:14 2017 out bet_fun 
Sun May 28 23:25:14 2017 -- Th-1 end wait ...
 Sun May 28 23:25:14 2017 -- Th-2 end wait ...

时间对象:
class threading.Timer(interval, function, args=[], kwargs={})
interval时间,单位秒
function函数名称
方法:
1.start()
2.cancel()
例如:

def hello():
    print "hello, world"

t = threading.Timer(3, hello)
t.start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值