def run_once(runner_list=None, extra_tick=Sleep(0.001), use_poll=False, auto_stop=True):
    """
    :param auto_stop when tick error occur, stop all runners, except:
        if error was from a runner tick and the runner has set 'only_stop_self_when_tick_error' to True,
        then only this runner stop
    """
    if runner_list is None:
        runner_list = _runner_list

    code = _run_once(runner_list, extra_tick, use_poll)
    if code is True:  # no error
        return True
    elif code is False:  # extra tick error
        if auto_stop:
            for runner in list(runner_list):
                runner.stop()
        return False
    else:  # runner tick error
        if hasattr(code, 'only_stop_self_when_tick_error') and code.only_stop_self_when_tick_error:
            if auto_stop:
                code.stop()
            return True
        else:
            if auto_stop:
                for runner in list(runner_list):
                    runner.stop()
            return False
    return True
def run_once ( runner_list = None , extra_tick = Sleep ( 0.001 ) , use_poll = False , auto_stop = True ) : if runner_list is None : runner_list = _runner_list code = _run_once ( runner_list , extra_tick , use_poll ) if code is True : return True elif code is False : if auto_stop : for runner in list ( runner_list ) : runner . stop ( ) return False else : if hasattr ( code , 'only_stop_self_when_tick_error' ) and code . only_stop_self_when_tick_error : if auto_stop : code . stop ( ) return True else : if auto_stop : for runner in list ( runner_list ) : runner . stop ( ) return False return True
:param auto_stop when tick error occur, stop all runners, except:
        if error was from a runner tick and the runner has set 'only_stop_self_when_tick_error' to True,
        then only this runner stop