docstr: Calculate interpolation bounds for the given axis and run the
  suite `range` times, stepping the interpolated axis by `step`.
docstr_tok: ["Calculate","interpolation","bounds","for","the","given","axis","and","run","the","suite","`","range","`","times",",","stepping","the","interpolated","axis","by","`","step","`","."]
code: def _run_interpolate(self, client_func):
      """Calculate interpolation bounds for the given axis and run the
      suite `range` times, stepping the interpolated axis by `step`."""
      start = int(getattr(self, self.interpolate_attr))
      end = int(
          getattr(self, self.interpolate_attr)
          + ((self.interpolate_range - 1) * self.interpolate_step)
      )
  
      logging.info(
          "Interpolating {} over {} runs, range: {} to {}".format(
              self.interpolate_attr, self.interpolate_range, start, end
          )
      )
  
      for i in range(0, self.interpolate_range):
          value = start
          setattr(self, self.interpolate_attr, value)
          logging.info(
              "Interpolating {}: {}".format(
                  self.interpolate_attr, value
              )
          )
          self._run_single(client_func)
          start = start + self.interpolate_step
  
file_path: perspective/python/perspective/bench/tornado/bench.py
imports: import logging
  import argparse
  import numpy
  import multiprocessing
  import asyncio
  import perspective
  from functools import partial
label_desc: Use image node_id 3 for calling the PerspectiveTornadoBenchmark obj's underlying member method code with example usage: obj._run_interpolate(client_func) without return types