use*_*971 4 python queue multithreading
我有两个线程:生产者和消费者。生产者定期获取信息并将其提供给消费者。消费者只需要最新的信息副本,并且会不定期地检查它,可能会间隔很长时间。
促进这种交流的最简单机制似乎是创建一个Queue.Queue(maxsize=1). 但是,如果生产者在消费旧信息之前获取新信息,它将阻塞,直到消费者首先使用过时的信息。生产者有没有办法覆盖旧信息?
有没有更好的线程安全机制来实现这一点?
最简单的解决方法可能是让生产者在放置之前消耗其旧值(如果有)。您可以Queue.get_nowait()为此使用。
在风格上,我不太热衷于将 Queue 用于仅打算容纳一个对象的东西。一个普通的 Lock + 一个引用变量将使代码的作用更加明显。
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |