142 def __init__(self, camera: microscope.abc.Camera) -> None:
143 super().__init__()
144 self._camera = camera
145 self._data_queue = _DataQueue()
146 if isinstance(self._camera, Pyro4.Proxy):
147 pyro_daemon = Pyro4.Daemon()
148 queue_uri = pyro_daemon.register(self._data_queue)
149 self._camera.set_client(queue_uri)
150 data_thread = threading.Thread(
151 target=pyro_daemon.requestLoop, daemon=True
152 )
153 data_thread.start()
154 else:
155 self._device.set_client(self._data_queue)
156 fetch_thread = threading.Thread(target=self.fetchLoop, daemon=True)
157 fetch_thread.start()
158
159
160
161
162 self.destroyed.connect(lambda: self._camera.set_client(None))
163