aboutsummaryrefslogtreecommitdiff
path: root/benchmark/agbenchmark/execute_sub_process.py
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark/agbenchmark/execute_sub_process.py')
-rw-r--r--benchmark/agbenchmark/execute_sub_process.py79
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")