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)
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)
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)
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)
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)
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
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)
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
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
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
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
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()
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)
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)