code: def do_gui_update(self):
          
          with self.update_lock:
              changed_widget_dict = {}
              self.root.repr(changed_widget_dict)
              for widget in changed_widget_dict.keys():
                  html = changed_widget_dict[widget]
                  __id = str(widget.identifier)
                  self._send_spontaneous_websocket_message(_MSG_UPDATE + __id + ',' + to_websocket(html))
          self._need_update_flag = False
docs: This method gets called also by Timer, a new thread, and so needs to lock the update