def _RunThreaded(self, vms, **kwargs):
    target = kwargs.pop('target', None)
    if target is not None:
      target_per_client = target // len(vms)
      targets = [target_per_client +
                 (1 if i < (target % len(vms)) else 0)
                 for i in xrange(len(vms))]
    else:
      targets = [target for _ in vms]

    results = []

    def _Run(loader_index):
      vm = vms[loader_index]
      kwargs['target'] = targets[loader_index]
      results.append(self._Run(vm, **kwargs))
      logging.info('VM %d (%s) finished', loader_index, vm)
    vm_util.RunThreaded(_Run, range(len(vms)))

    if len(results) != len(vms):
      raise IOError('Missing results: only {0}/{1} reported\n{2}'.format(
          len(results), len(vms), results))

    return results
Run a single workload using `vms`.
dataset/ETHPy150Open GoogleCloudPlatform/PerfKitBenchmarker/perfkitbenchmarker/linux_packages/ycsb.py/YCSBExecutor._RunThreaded