class_docstr: Object representing a complex data producer.
class_docstr_tok: ["Object","representing","a","complex","data","producer","."]
code: def run_data_creation(self):
      print("Run data creation is starting")
      for count in range(self._num_iters):
          if self._should_end:
              print("Data source saw that it was told to stop")
              break
          time.sleep(1.0)
          # Uncomment to mimic a long-running computation
          # time.sleep(3)
          image_data = self._update_image_data(count)
          line_data = self._update_line_data(count)
  
          data_dict = {
              "image": image_data,
              "line": line_data,
          }
          self.new_data.emit(data_dict)
      print("Data source finishing")
      self.finished.emit()
  
imports: import time
  from math import sin, pi
  import numpy
  from PyQt5 import QtWidgets, QtCore
  from vispy.scene import SceneCanvas, visuals
  from vispy.app import use_app
label_desc: Use image node_id 2 for calling the DataSource obj's underlying member method code with example usage: obj.run_data_creation() without return types