Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线程-如何等待来自多个发送者的数据合并结果?_Python_Multithreading_Design Patterns_Queue_Python Multithreading - Fatal编程技术网

Python线程-如何等待来自多个发送者的数据合并结果?

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)

我的ImageStitcher类正在接收来自不同线程的多个图像消息。然后,另一个线程将调用get_stichted_image(),这样就可以了。但是它看起来不太好,而且看起来有点慢

有没有更好的方法来处理来自不同线程的多个传入消息,并等待所有队列(或其他队列)包含某些内容

类图像缝合器:
定义初始化(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线程调用的。但不管是线程还是进程,问题都是一样的。你可以用“条件”来“等待”对于其中一个队列中的新项目(所有队列的单个条件)。如果放置了新项目,将通知条件,等待线程将检查所有队列中的新项目。