Example #1
0
def main() -> None:
    """Fonction principale"""
    setproctitle(f"XG main {DELAI_SEC}")
    try:
        ps_eval = Process(target=eval_ini)
        ps_eval.start()
        ps_dot = Process(target=print_forever, args=('.', 0.1))
        ps_dot.start()
        ps_star = Process(target=print_forever, args=('*', 0.3))
        ps_star.start()
        ps_x = Process(target=print_forever, args=('X', 0.3))
        ps_x.start()
        ps_g = Process(target=print_forever, args=('G', 0.3))
        ps_g.start()
        os.system(f"pstree -U {os.getpid()} | grep --color=always \\\\w ")
        ps_eval.join(DELAI_SEC)
        ps_dot.terminate()
        ps_star.terminate()
        ps_x.terminate()
        ps_g.terminate()

        if ps_eval.is_alive():
            ps_eval.terminate()
            raise TimeoutError(f"le délai de {DELAI_SEC} secondes est écouler")
    except Exception as ex:
        print()
        pyval_safe.exexit(ex)
    except KeyboardInterrupt:
        sys.exit(1)
Example #2
0
def pyval(expr: str, retour: list) -> None:
    """
    Évalue une expression.
    Reour via via argument
    """
    try:
        assert retour[0] == 99
        retour[0] = safe_eval(expr)
        print(expr, '=', retour[0])
    except BaseException as ex:
        exexit(ex)
Example #3
0
def pyval(expr: str) -> None:
    """
    Évalue une expression.
    Reour via varaible globale
    """
    global EVALUATION
    try:
        EVALUATION = safe_eval(expr)
        print(expr, '=', EVALUATION)

    except BaseException as ex:
        exexit(ex)
Example #4
0
def pyval(expr: str, retour: Value) -> None:
    """
    Évalue une expression.
    Reour via via Multiprocessing.Value (shared memory)
    Type supporté: c_double = python float
    """
    try:
        assert retour.value == 99
        retour.value = float(safe_eval(expr))
        print(expr, '=', retour.value)
    except BaseException as ex:
        exexit(ex)
Example #5
0
def main() -> None:
    """Fonction principale"""
    try:
        ps = Process(target=pyval_safe.main)
        ps.start()
        ps.join(DELAI_SEC)
        if ps.is_alive():
            ps.terminate()
            raise TimeoutError(f"le délai de {DELAI_SEC} secondes est écouler")
    except Exception as ex:
        pyval_safe.exexit(ex)
    except KeyboardInterrupt:
        sys.exit(1)
Example #6
0
def main() -> None:
    """Fonction principale"""
    try:
        expr = ' '.join(sys.argv[1:]) or "None"
        th = Thread(target=pyval, args=(expr,))
        th.start()
        th.join(DELAI_SEC)
        if th.is_alive():
            raise TimeoutError(f"Le délai de {DELAI_SEC} seconde est écoulé")
        print(Fore.CYAN + "Selon Xavier Gagnon:" + Fore.RESET, EVALUATION)
    except Exception as ex:
        exexit(ex)
    except KeyboardInterrupt:
        pass
Example #7
0
def pyval(expr: str, filename: str) -> None:
    """
    Évalue une expression.
    Reour via via Multiprocessing.Value (shared memory)
    Type supporté: c_double = python float
    """
    try:
        evaluation = safe_eval(expr)
        print(expr, '=', evaluation)
        with open(filename, 'w+b') as f:
            pickle.dump(evaluation, f)

    except BaseException as ex:
        exexit(ex)
Example #8
0
def main() -> None:
    """Fonction principale"""
    try:
        expr = ' '.join(sys.argv[1:]) or "None"
        ps = Process(target=pyval, args=(expr,))
        ps.start()
        ps.join(DELAI_SEC)
        if ps.is_alive():
            ps.terminate()
            raise TimeoutError(f"Le délai de {DELAI_SEC} seconde est écoulé")
        if not ps.exitcode:
            print(Fore.CYAN + "Selon Xavier Gagnon:" + Fore.RESET, EVALUATION)
    except Exception as ex:
        exexit(ex)
    except KeyboardInterrupt:
        pass
Example #9
0
def main() -> None:
    """Fonction principale"""
    try:
        expr = ' '.join(sys.argv[1:]) or "None"
        retour = mp.Array(ctypes.c_char, ARRAY_SIZE)
        ps = mp.Process(target=pyval, args=(expr, retour))
        ps.start()
        ps.join(DELAI_SEC)
        if ps.is_alive():
            ps.terminate()
            raise TimeoutError(f"Le délai de {DELAI_SEC} seconde est écoulé")
        evaluation = pickle.loads(bytes(retour[:]))
        if isinstance(evaluation, BaseException):
            raise evaluation
        print(Fore.CYAN + "Selon Xavier Gagnon:" + Fore.RESET, evaluation)
    except Exception as ex:
        exexit(ex)
    except KeyboardInterrupt:
        pass
Example #10
0
def main() -> None:
    """Fonction principale"""
    try:
        expr = ' '.join(sys.argv[1:]) or "None"
        queue = Queue()
        ps = Process(target=pyval, args=(expr, queue))
        ps.start()
        ps.join(DELAI_SEC)
        if ps.is_alive():
            ps.terminate()
            raise TimeoutError(f"Le délai de {DELAI_SEC} seconde est écoulé")
        evaluation = queue.get()
        if isinstance(evaluation, BaseException):
            raise evaluation
        print(Fore.CYAN + "Selon Xavier Gagnon:" + Fore.RESET, evaluation)
    except Exception as ex:
        exexit(ex)
    except KeyboardInterrupt:
        pass
Example #11
0
def main() -> None:
    """Fonction principale"""
    try:
        expr = ' '.join(sys.argv[1:]) or "None"
        filename = "ipc5.bin"
        ps = Process(target=pyval, args=(expr, filename))
        ps.start()
        ps.join(DELAI_SEC)
        if ps.is_alive():
            ps.terminate()
            raise TimeoutError(f"Le délai de {DELAI_SEC} seconde est écoulé")
        if not ps.exitcode:
            with open(filename, "r+b") as f:
                evaluation = pickle.load(f)
                print(Fore.CYAN + "Selon Xavier Gagnon:" + Fore.RESET,
                      evaluation)
    except Exception as ex:
        exexit(ex)
    except KeyboardInterrupt:
        pass
Example #12
0
def main() -> None:
    """Fonction principale"""
    ps: Optional[Process] = None
    try:
        expr = ' '.join(sys.argv[1:]) or "None"
        parent_conn, child_conn = Pipe()
        ps = Process(target=pyval, args=(expr, child_conn))
        ps.start()
        ps.join(DELAI_SEC)
        if not parent_conn.poll(DELAI_SEC):
            raise TimeoutError(f"Le délai de {DELAI_SEC} seconde est écoulé")
        evaluation = parent_conn.recv()
        if isinstance(evaluation, BaseException):
            raise evaluation
        print(Fore.CYAN + "Selon Xavier Gagnon:" + Fore.RESET, evaluation)
    except Exception as ex:
        exexit(ex)
    except KeyboardInterrupt:
        pass
    finally:
        ps and ps.terminate()
Example #13
0
def main() -> None:
    """Fonction principale"""
    try:
        p = Process(target=pyval_safe.main)
        p.start()

        increment = 0.1
        temps = 0.0

        while p.is_alive() and temps < DELAI_SEC:
            if temps > 0.2:
                print('.', end='', flush=True)
            p.join(increment)
            temps += increment
        if p.is_alive():
            p.terminate()
            raise TimeoutError(f"le délai de {DELAI_SEC} secondes est écouler")
    except Exception as ex:
        print()
        pyval_safe.exexit(ex)
    except KeyboardInterrupt:
        sys.exit(1)
Example #14
0
def main() -> None:
    """Fonction principale"""
    try:
        ps_eval = Process(target=pyval_safe.main)
        ps_eval.start()
        ps_dot = Process(target=print_forever, args=('.', 0.1))
        ps_dot.start()

        print('délai', DELAI_SEC, '__', 'main:', os.getpid(), '__', 'ps_eval',
              ps_eval.pid, '__', 'ps_dot:', ps_dot.pid)

        ps_eval.join(DELAI_SEC)
        ps_dot.terminate()

        if ps_eval.is_alive():
            ps_eval.terminate()
            raise TimeoutError(f"le délai de {DELAI_SEC} secondes est écouler")
    except Exception as ex:
        print()
        pyval_safe.exexit(ex)
    except KeyboardInterrupt:
        sys.exit(1)