diff options
Diffstat (limited to 'benchmark/agbenchmark/execute_sub_process.py')
-rw-r--r-- | benchmark/agbenchmark/execute_sub_process.py | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/benchmark/agbenchmark/execute_sub_process.py b/benchmark/agbenchmark/execute_sub_process.py deleted file mode 100644 index b981e6be5..000000000 --- a/benchmark/agbenchmark/execute_sub_process.py +++ /dev/null @@ -1,79 +0,0 @@ -import platform -import queue -import select -import subprocess -import time -from threading import Thread -from typing import Any - -import psutil - - -def run_linux_env(process: Any, start_time: float, timeout: float) -> None: - while True: - try: - # This checks if there's data to be read from stdout without blocking. - if process.stdout and select.select([process.stdout], [], [], 0)[0]: - output = process.stdout.readline() - print(output.strip()) - except Exception as e: - continue - - # Check if process has ended, has no more output, or exceeded timeout - if process.poll() is not None or (time.time() - start_time > timeout): - break - - if time.time() - start_time > timeout: - print("The Python function has exceeded the time limit and was terminated.") - parent = psutil.Process(process.pid) - for child in parent.children(recursive=True): - child.kill() - parent.kill() - - else: - print("The Python function has finished running.") - - -def enqueue_output(out: Any, my_queue: Any) -> None: - for line in iter(out.readline, b""): - my_queue.put(line) - out.close() - - -def run_windows_env(process: Any, start_time: float, timeout: float) -> None: - my_queue: Any = queue.Queue() - thread = Thread(target=enqueue_output, args=(process.stdout, my_queue)) - thread.daemon = True - thread.start() - - while True: - try: - output = my_queue.get_nowait().strip() - print(output) - except queue.Empty: - pass - - if process.poll() is not None or (time.time() - start_time > timeout): - break - - if time.time() - start_time > timeout: - print("The Python function has exceeded the time limit and was terminated.") - process.terminate() - - -def execute_subprocess(command, timeout): - process = subprocess.Popen( - command, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - universal_newlines=True, - bufsize=1, - ) - start_time = time.time() - if platform.system() == "Windows": - run_windows_env(process, start_time, timeout) - else: - run_linux_env(process, start_time, timeout) - process.wait() - if process.returncode != 0: - print(f"The agent timed out") |