Python线程-如何等待来自多个发送者的数据合并结果?
我的ImageStitcher类正在接收来自不同线程的多个图像消息。然后,另一个线程将调用get_stichted_image(),这样就可以了。但是它看起来不太好,而且看起来有点慢 有没有更好的方法来处理来自不同线程的多个传入消息,并等待所有队列(或其他队列)包含某些内容Python线程-如何等待来自多个发送者的数据合并结果?,python,multithreading,design-patterns,queue,python-multithreading,Python,Multithreading,Design Patterns,Queue,Python Multithreading,我的ImageStitcher类正在接收来自不同线程的多个图像消息。然后,另一个线程将调用get_stichted_image(),这样就可以了。但是它看起来不太好,而且看起来有点慢 有没有更好的方法来处理来自不同线程的多个传入消息,并等待所有队列(或其他队列)包含某些内容 类图像缝合器: 定义初始化(foo): self.image\u存储={ Position.top:queue.queue(maxsize=1), Position.bottom:queue.queue(maxsize=1)
类图像缝合器:
定义初始化(foo):
self.image\u存储={
Position.top:queue.queue(maxsize=1),
Position.bottom:queue.queue(maxsize=1)
}
foo.register(image\u回调)
#将从不同的线程调用
def image_回调(self,image_msg):
如果self.image_存储[image_msg[“position”]].full():
self.image\u存储[image\u msg[“position”].get()
self.image\u存储[image\u msg[“position”].put(image\u msg)
def获取粘贴图像(自我):
尝试:
#下面的代码很难看,看起来很慢
top\u image\u msg=self.image\u存储[Position.top].get(超时=0.1)
bottom\u image\u msg=self.image\u存储[Position.bottom].get(超时=0.1)
返回自缝合图像(顶部图像、底部图像)
队列除外。空:
一无所获
我想知道线程和多处理之间是否存在混淆。假设您不必执行I/O操作,您应该实际使用多处理。请参见此处:我对上述评论有点怀疑。我认为在这种情况下,您需要线程而不是多处理来利用共享内存和对象。至于你在寻找什么——你的问题相当广泛,我建议你看看关于队列线程管理的博客,等等。这个回调实际上是从I/O线程调用的。但不管是线程还是进程,问题都是一样的。你可以用“条件”来“等待”对于其中一个队列中的新项目(所有队列的单个条件)。如果放置了新项目,将通知条件,等待线程将检查所有队列中的新项目。