class_docstr: Thread that feeds a TF queue from a InputReader.
class_docstr_tok: ["Thread","that","feeds","a","TF","queue","from","a","InputReader","."]
code: def __init__(
      self,
      input_reader: InputReader,
      queue: "tf1.FIFOQueue",
      keys: List[str],
      dtypes: "tf.dtypes.DType",
  ):
      threading.Thread.__init__(self)
      self.sess = tf1.get_default_session()
      self.daemon = True
      self.input_reader = input_reader
      self.keys = keys
      self.queue = queue
      self.placeholders = [tf1.placeholder(dtype) for dtype in dtypes]
      self.enqueue_op = queue.enqueue(
          dict(zip(keys, self.placeholders))
      )
  
file_path: ray/python/ray/rllib/offline/input_reader.py
imports: from abc import ABCMeta, abstractmethod
  import logging
  import numpy
  import threading
  from ray.rllib.policy.sample_batch import MultiAgentBatch
  from ray.rllib.utils.annotations import PublicAPI
  from ray.rllib.utils.framework import try_import_tf
  from typing import Dict, List
  from ray.rllib.utils.typing import TensorType, SampleBatchType
label_desc: Use image node_id 1 to create a new _QueueRunner object from inherited base classes: threading with example: obj = _QueueRunner(input_reader, queue, keys, dtypes)