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: Creates a generator to extract data from the queue.
  
  Skip the data if it is `None`.
  
  Returns:
      Generator yielding tuples `(inputs, targets)`
          or `(inputs, targets, sample_weights)`.
docstr_tok: ["Creates","a","generator","to","extract","data","from","the","queue",".","Skip","the","data","if","it","is","`","None","`",".","Returns",":","Generator","yielding","tuples","`","(","inputs",",","targets",")","`","or","`","(","inputs",",","targets",",","sample_weights",")","`","."]
code: def get(self):
      """Creates a generator to extract data from the queue.
  
      Skip the data if it is `None`.
  
      Returns:
          Generator yielding tuples `(inputs, targets)`
              or `(inputs, targets, sample_weights)`.
      """
      raise NotImplementedError
  
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 9 for calling the PyDatasetEnqueuer obj's underlying member method code with example usage: obj.get() without return types