'We initialize the profilers just before start because only then we
know all the hosts involved.'

def _run_clients(self, test, hosts):

    hostnames = [host_info[0].hostname for host_info in hosts]
    profilers_args = [(p.name, p.args, p.dargs) for p in self.list]
    for (host, at, autodir) in hosts:
        control_script = standalone_profiler.generate_test(hostnames, host.hostname, profilers_args, 180, None)
        try:
            at.run(control_script, background=True)
        except Exception:
            self._get_failure_logs(autodir, test, host)
            raise
        remote_results_dir = get_profiler_results_dir(autodir)
        local_results_dir = self._get_local_profilers_dir(test, host.hostname)
        self.job.add_client_log(host.hostname, remote_results_dir, local_results_dir)
    try:
        standalone_profiler.wait_for_profilers(hostnames)
    except Exception:
        self._get_all_failure_logs(test, hosts)
        raise
