在我的局域网上有一台仪器,它每5-10毫秒发送一次UDP数据包。在我的应用程序中,我有一个读取器线程,它在套接字启动时分配一个具有大缓冲区的套接字,然后进入无限循环来读取累积的数据包,解析它们,将它们写入假脱机程序,然后休眠半秒(time.sleep(0.500))。
我有几个懒惰的数据消费者,它们中的大多数都进行归档或生成被动统计数据。但是有一个消费者(用于显示)需要最新的数据,并且需要在查询假脱机程序之前唤醒休眠的读取器(以读取套接字)。
唤醒休眠线程的最好方法是什么?
(或者,有没有更好的方式让线程休眠,更容易唤醒?)
发布于 2014-04-08 22:07:04
我没有注意到threading.condition.wait()有一个可选的超时参数!
答案是使用create a condition object,并使用其带有可选超时的wait()方法,而不是time.sleep()。如果线程需要在超时之前被唤醒,则调用condition对象的notify()方法。
https://stackoverflow.com/questions/22849606
复制相似问题