class_docstr: Base class to enqueue inputs.
  
  The task of an Enqueuer is to use parallelism to speed up preprocessing.
  This is done with processes or threads.
  
  Example:
  
  ```python
      enqueuer = PyDatasetEnqueuer(...)
      enqueuer.start()
      datas = enqueuer.get()
      for data in datas:
          # Use the inputs; training, evaluating, predicting.
          # ... stop sometime.
      enqueuer.stop()
  ```
  
  The `enqueuer.get()` should be an infinite stream of data.
docstr: Starts the handler's workers.
  
  Args:
      workers: Number of workers.
      max_queue_size: queue size
          (when full, workers could block on `put()`)
docstr_tok: ["Starts","the","handler","'s","workers",".","Args",":","workers",":","Number","of","workers",".","max_queue_size",":","queue","size","(","when","full",",","workers","could","block","on","`","put","(",")","`",")"]
code: def start(self, workers=1, max_queue_size=10):
      """Starts the handler's workers.
  
      Args:
          workers: Number of workers.
          max_queue_size: queue size
              (when full, workers could block on `put()`)
      """
      if self.use_multiprocessing:
          self.executor_fn = self._get_executor_init(workers)
      else:
          # We do not need the init since it's threads.
          self.executor_fn = lambda _: get_pool_class(False)(workers)
      self.workers = workers
      self.queue = queue.Queue(max_queue_size)
      self.stop_signal = threading.Event()
      self.run_thread = threading.Thread(target=self._run)
      self.run_thread.daemon = True
      self.run_thread.start()
  
imports: import multiprocessing.dummy
  import queue
  import random
  import threading
  import time
  import warnings
  import weakref
  from contextlib import closing
  import numpy
  import tree
  from keras.api_export import keras_export
  from keras.trainers.data_adapters import data_adapter_utils
  from keras.trainers.data_adapters.data_adapter import DataAdapter
label_desc: Use image node_id 3 for calling the PyDatasetEnqueuer obj's underlying member method code with example usage: obj.start(workers, max_queue_size) without return types