this is the actual execution of the ReadProbes thread: continuously read values from the probes

def run(self):
        """
        this is the actual execution of the ReadProbes thread: continuously read values from the probes
        """
        if self.probes is None:
            self._stop = True
        while True:

            if self._stop:
                break

            self.probes_values = {
                instrument_name:
                    {probe_name: probe_instance.value for probe_name, probe_instance in probe.items()}
                for instrument_name, probe in self.probes.items()
                }

            self.updateProgress.emit(1)

            self.msleep(int(1e3*self.refresh_interval))