diff --git a/environment.yml b/environment.yml index 24bed7a90..188d5c118 100644 --- a/environment.yml +++ b/environment.yml @@ -15,3 +15,4 @@ dependencies: - captcha==0.5.0 - pyopenms_viz==1.0.0 - streamlit-js-eval + - psutil==7.0.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 471436f25..95615786e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,3 +8,4 @@ plotly==5.22.0 captcha==0.5.0 pyopenms_viz==1.0.0 streamlit-js-eval +psutil==7.0.0 \ No newline at end of file diff --git a/src/common/common.py b/src/common/common.py index ca8231307..09fd681cd 100644 --- a/src/common/common.py +++ b/src/common/common.py @@ -10,7 +10,7 @@ import streamlit as st import pandas as pd - +import psutil try: from tkinter import Tk, filedialog @@ -23,6 +23,18 @@ # Detect system platform OS_PLATFORM = sys.platform +@st.fragment(run_every=5) +def monitor_hardware(): + cpu_progress = psutil.cpu_percent(interval=None) / 100 + ram_progress = 1 - psutil.virtual_memory().available / psutil.virtual_memory().total + + st.text(f"Ram ({ram_progress * 100:.2f}%)") + st.progress(ram_progress) + + st.text(f"CPU ({cpu_progress * 100:.2f}%)") + st.progress(cpu_progress) + + st.caption(f"Last fetched at: {time.strftime('%H:%M:%S')}") def load_params(default: bool = False) -> dict[str, Any]: """ @@ -211,7 +223,7 @@ def page_setup(page: str = "") -> dict[str, Any]: if st.session_state.settings["workspaces_dir"] and st.session_state.location == "local": workspaces_dir = Path(st.session_state.settings["workspaces_dir"], "workspaces-" + st.session_state.settings["repository-name"]) else: - workspace_dir = '..' + workspaces_dir = '..' # Check if workspace logic is enabled if st.session_state.settings["enable_workspaces"]: @@ -348,6 +360,9 @@ def change_workspace(): ) else: st.session_state["spectrum_num_bins"] = 50 + + with st.expander("📊 **Resource Utilization**"): + monitor_hardware() # Display OpenMS WebApp Template Version from settings.json with st.container():