欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

事件,条件

发布时间:2025/6/17 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 事件,条件 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

事件

  • 其实就是开两条线程,一条进行数据传输
  • 另外一条,查看网络是否安全,如果不行就会clear(),也就是给数据传输的那条线程一个信号,
  • 主要原理就是wait()方法,只有当事件为True的时候才可以继续运行,不然就会被wait()方法阻塞住,默认是False , is_set()方法是查看事件状态的
# 模拟拿数据断网了的操作from threading import Thread, Event import random import timee = Event()def foo():while 1:e.wait(3) # 阻塞,如果时间状态为False则会阻塞,反之,可以通过time.sleep(0.6)if e.is_set() == True: # is_set 查看事件状态为False还是Trueprint("拿到数据啦")else:print("断网了")breakdef foo1():for i in range(5):time.sleep(1)state = iif state != 3:e.set() # 如果不为3,就把他设置成True,就可以取数据else:e.clear() # 如果为3,就设置成Falsedef foo2():time.sleep(4)e.set()t = Thread(target=foo) t1 = Thread(target=foo2) t.start() t1.start()

条件

  • 总的来说条件就是一个更加复杂的锁
# 条件其实就是更加复杂的锁from threading import Thread,Conditioncond = Condition()def foo():cond.acquire() # 必须包裹住 wait() 方法cond.wait()print("进来一个")cond.release() # 必须包裹住 wait() 方法for i in range(10): # 设置10个线程,通过完就没有了t = Thread(target=foo)t.start()while 1:num = input("请输入放行的子进程个数:") # 相当于给线程设置了个告诉加油站的收费处cond.acquire() # 必须包裹住 notify() 方法cond.notify(int(num))cond.release() # 必须包裹住 notify() 方法

转载于:https://www.cnblogs.com/xiongchao0823/p/11552405.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的事件,条件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。