def METHOD_NAME(executable_targets, app_id):
    """
    Execute a set of binaries that make up a complete application on
    specified cores, wait for them to be ready and then start all of the
    binaries.
    .. note::
        This will get the binaries into c_main but will not signal the
        barrier.
    :param ExecutableTargets executable_targets:
        The binaries to be executed and the cores to execute them on
    :param int app_id: The app_id to give this application
    """
    # Execute each of the binaries and get them in to a "wait" state
    transceiver = FecDataView.get_transceiver()
    for binary in executable_targets.binaries:
        core_subsets = executable_targets.get_cores_for_binary(binary)
        transceiver.execute_flood(
            core_subsets, binary, app_id, wait=True, is_filename=True)
    # Sleep to allow cores to get going
    time.sleep(0.5)
    # Check that the binaries have reached a wait state
    count = transceiver.get_core_state_count(app_id, CPUState.READY)
    if count < executable_targets.total_processors:
        cores_ready = transceiver.get_cpu_infos(
            executable_targets.all_core_subsets, [CPUState.READY], False)
        if len(cores_ready) > 0:
            raise SpinnmanException(
                f"Only {count} of {executable_targets.total_processors} "
                "cores reached ready state: "
                f"{cores_ready.get_status_string()}")
    # Send a signal telling the application to start
    transceiver.send_signal(app_id, Signal.START)