class_docstr: The class is used to feed data with some process from a reader into a
  queue and provider a reader interface for data fetching from the queue.
code: def __init__(
      self,
      fields,
      name=None,
      capacity=1,
      enforce_unique_name=False,
      num_threads=1,
  ):
      assert isinstance(fields, list) or isinstance(
          fields, Struct
      ), "fields must be either a Struct or a list of raw field names."
      if isinstance(fields, list):
          fields = from_column_list(fields)
      self.schema = fields
      self.name = name or "queue"
      self.num_threads = num_threads
      num_blobs = len(self.schema.field_names())
      init_net = core.Net(self.name + "/init_net")
      self.blobs_queue = init_net.CreateBlobsQueue(
          [],
          1,
          capacity=capacity,
          num_blobs=num_blobs,
          enforce_unique_name=enforce_unique_name,
      )
      core.workspace.RunNetOnce(init_net)
  
      self.writer = _QueueWriter(self.blobs_queue, self.schema)
      reader_name = self.name + "_reader"
      self.reader = _QueueReader(
          self.blobs_queue, self.schema, reader_name
      )
  
      exit_net = core.Net(self.name + "/exit_net")
      exit_net.CloseBlobsQueue(self.blobs_queue, 0)
      self.exit_step = core.execution_step(
          "{}_close_step".format(str(exit_net)), exit_net
      )
  
file_path: pytorch/caffe2/python/record_queue.py
imports: from caffe2.python import core
  from caffe2.python.dataio import Reader, Writer
  from caffe2.python.schema import Struct, Field, from_column_list
label_desc: Use image node_id 1 to create a new RecordQueue object  with example: obj = RecordQueue(fields, name, capacity, enforce_unique_name, num_threads)