code: def _log_inputs_per_interval(self, inputs, force=False):
      self._inputs += inputs
      current_seconds = time.time()
      delta_seconds = current_seconds - self._prev_seconds
      if delta_seconds >= LOG_INT_SECS or force:
          inputs_per_sec = int(self._inputs / delta_seconds)
          qsize = self._internal_queue.qsize()
          log.info(
              "{}/{}: {} inputs/sec".format(
                  self._input_source_name,
                  self._namescope,
                  inputs_per_sec,
              )
          )
          log.info("-- queue: {} batches".format(qsize))
          # log and reset perf metrics
          self._metrics.put_metric(
              "inputs_per_sec", inputs_per_sec, False
          )
          self._metrics.put_metric("queue_size", qsize, False)
          self._metrics.put_metric("time_elapsed", delta_seconds, False)
          self._metrics.log_metrics()
          self._metrics.reset_metrics()
          self._inputs = 0
          self._prev_seconds = current_seconds
  
imports: import queue
  from itertools import chain
  import logging
  import threading
  import numpy
  import time
  from caffe2.python import workspace, core, scope, utils
  from caffe2.proto import caffe2_pb2
  from caffe2.python.parallel_workers import Metrics, State, WorkerCoordinator, GlobalWorkerCoordinator, Worker, run_worker
label_desc: Use image node_id 14 for calling the BatchFeeder obj's underlying member method code with example usage: obj._log_inputs_per_interval(inputs, force) without return types