我正在上面的脚本中处理这个对象SharedMemoryDisplay,我想返回/检索self.camera_container,其中self.camera_container = {camera_id: (camera_id, frame, frame_properties)}
我试图创建一个方法来返回这个,但它给出了两个错误
prop, camera_container = monitor_memory.get_frame()
TypeError: 'NoneType' object is not iterable
AttributeError: Can't pickle local object 'SharedMemoryDisplay.__init__.<locals>.<lambda>'
我只能获得self-camera_container[key],如果我只是这样做的话,这很好,但我也想获得self-camera_container。
return self.camera_container[key]
在下面的脚本中,我使用这个对象在一个名为cv2的窗口中显示,我的最终动机是分别检索所有相机的帧。它目前所做的是连接所有相机帧,并通过self.display_frame返回,该帧添加到下面脚本中的webdisplay_memory
中(用于在html中显示(,这就是为什么我创建了一个检索字典camera_container
的方法。webdisplay_memory.add_frame(0,self.display_frame,无(与其摆弄这个变量,我想创建一个返回self.camera_container
的方法,而不是使用它来分别获取每个相机的帧。
我该如何克服这一点,如果你有更好、有效的解决方案,请帮忙!
multiprocessing
在引擎盖下使用pickle
。pickle
只能序列化一组特定的对象。具体来说,它不能序列化defaultdict
(camera_container
的类型(。因此,要么使用普通的dict
并将所有查找替换为self.camera_container.get(key, None)
,要么研究这个问题并尝试将pathos.multiprocessing
与dill
一起使用。不过,后一种方法没有经过我的检验。