def launchBootstraps():
    """Launch the bootstrap instances in separate subprocesses"""
    global processes
    worker_amount, verbosity, args = getArgs()
    was_origin = False

    if verbosity >= 1:
        sys.stderr.write("Launching {0} worker(s) using {1}.\n".format(
                worker_amount,
                os.environ['SHELL'] if 'SHELL' in os.environ else "an unknown shell",
            )
        )
        sys.stderr.flush()

    processes = []
    for _ in range(worker_amount):
        command = [sys.executable, "-m", BOOTSTRAP_MODULE] + args
        if verbosity >= 3:
            sys.stderr.write("Executing '{0}'...\n".format(command))
            sys.stderr.flush()
        processes.append(Popen(command))

        # Only have a single origin
        try:
            args.remove("--origin")
        except ValueError:
            pass
        else:
            was_origin = True

    if was_origin:
        # Only wait on the origin, this will return and notify the launcher
        # the the job has finished and start the cleanup phase
        try:
            processes[0].wait()
        except KeyboardInterrupt:
            pass
    else:
        for p in processes:
            p.wait()
Launch the bootstrap instances in separate subprocesses