python 线程同步通信之event事件

1、线程间同步通信 

同步:为了有序线程交互,协调线程运行时序。

线程同步手段:互斥量(一个资源同一时间只许一个线程使用)、事件对象、临界区。

Python通过两个标准库thread和threading提供对线程的支持。

ps:感觉C++通过函数创建线程跟thread库蛮像的,偏底层。threading库通过继承重写threading.Thread模块,性能很强。

另一个回答:https://blog.youkuaiyun.com/serena_t/article/details/90208811  python 多线程和C++多线程的区别

2、threading库中的Event对象

Event对象包含一个可由线程设置的信号对象(状态值),为假时事件阻塞线程,为真线程忽略事件,由假到真唤醒线程。

阻塞与等待:https://www.jianshu.com/p/73352d0a14d4

2、Event几种方法及demo

event.isSet():返回event的状态值;

event.wait():如果 event.isSet()==False将阻塞线程;

event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;

event.clear():恢复event的状态值为False

from threading import Thread,Event
import time

event=Event()

def light():
    print('红灯正亮着')
    time.sleep(3)
    event.set() #绿灯亮

def car(name):
    print('车%s正在等绿灯' %name)
    event.wait() #等灯绿 此时event为False,直到event.set()将其值设置为True,才会继续运行.
    print('车%s通行' %name)

if __name__ == '__main__':
    # 红绿灯
    t1=Thread(target=light)
    t1.start()
    # 车
    for i in range(10):
        t=Thread(target=car,args=(i,))
        t.start()

代码来自:https://www.cnblogs.com/zhangshengxiang/p/9606133.html  python之event事件

demo2:https://www.jianshu.com/p/c8dc6f689915  Python多线程-Event(事件对象)

3、相关博客:https://blog.youkuaiyun.com/guoxiang3538/article/details/79376191  线程同步的四种方式

参考文献:https://www.runoob.com/python/python-multithreading.html   多线程 菜鸟驿站

有几个很好的程序,回头自己写一下,Mark。

4、pygame event

网上可以找到pygame的中文文档, 看完没解决我的问题,event事件是怎么触发的。【1】

另有网站介绍一些event type的触发方式,但说明的不是很清楚。【2】【3】

比如说VIDEORESIZE,说是窗口缩放触发,实际测试中,实际只要启动display就会触发。这也算窗口缩放吗,懂行的老哥路过指导下,感谢~

【1】https://max.book118.com/html/2017/0718/122825300.shtm  pygame中文文档

【2】https://www.jianshu.com/p/e0986ea0c5cd  2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示

【3】https://www.cnblogs.com/msxh/p/4979380.html 【python游戏编程之旅】第三篇---pygame事件与设备轮询 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值