Skip to content

Commit 949a9bd

Browse files
committed
refactor: move _get_max_threads() to CommandExecutor
- Move function from common.py to CommandExecutor as private method - Simplifies code by using self.parameter_manager directly - Remove unnecessary import and parameter passing https://claude.ai/code/session_01XGuw7AxoKRWHr9EZX1SDXi
1 parent 5a9a870 commit 949a9bd

File tree

2 files changed

+23
-32
lines changed

2 files changed

+23
-32
lines changed

src/common/common.py

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,6 @@
3232
OS_PLATFORM = sys.platform
3333

3434

35-
def get_max_threads(parameter_manager=None) -> int:
36-
"""
37-
Get max threads for current deployment mode.
38-
39-
In local mode, reads from parameter manager (persisted params.json).
40-
In online mode, uses the configured value directly from settings.
41-
42-
Args:
43-
parameter_manager: Optional ParameterManager instance for reading persisted params.
44-
45-
Returns:
46-
int: Maximum number of threads to use for parallel processing.
47-
"""
48-
settings = st.session_state.get("settings", {})
49-
max_threads_config = settings.get("max_threads", {"local": 4, "online": 2})
50-
51-
if settings.get("online_deployment", False):
52-
return max_threads_config.get("online", 2)
53-
else:
54-
# Local mode: read from parameter manager if available
55-
default = max_threads_config.get("local", 4)
56-
if parameter_manager is not None:
57-
params = parameter_manager.get_parameters_from_json()
58-
return params.get("max_threads", default)
59-
return default
60-
61-
6235
def is_safe_workspace_name(name: str) -> bool:
6336
"""
6437
Check if a workspace name is safe (no path traversal characters).

src/workflow/CommandExecutor.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,27 @@ def __init__(self, workflow_dir: Path, logger: Logger, parameter_manager: Parame
2525
self.logger = logger
2626
self.parameter_manager = parameter_manager
2727

28+
def _get_max_threads(self) -> int:
29+
"""
30+
Get max threads for current deployment mode.
31+
32+
In local mode, reads from parameter manager (persisted params.json).
33+
In online mode, uses the configured value directly from settings.
34+
35+
Returns:
36+
int: Maximum number of threads to use for parallel processing.
37+
"""
38+
import streamlit as st
39+
settings = st.session_state.get("settings", {})
40+
max_threads_config = settings.get("max_threads", {"local": 4, "online": 2})
41+
42+
if settings.get("online_deployment", False):
43+
return max_threads_config.get("online", 2)
44+
else:
45+
default = max_threads_config.get("local", 4)
46+
params = self.parameter_manager.get_parameters_from_json()
47+
return params.get("max_threads", default)
48+
2849
def run_multiple_commands(
2950
self, commands: list[str]
3051
) -> bool:
@@ -43,10 +64,8 @@ def run_multiple_commands(
4364
Returns:
4465
bool: True if all commands succeeded, False if any failed.
4566
"""
46-
from src.common.common import get_max_threads
47-
4867
# Get thread settings and calculate distribution
49-
max_threads = get_max_threads(self.parameter_manager)
68+
max_threads = self._get_max_threads()
5069
num_commands = len(commands)
5170
parallel_commands = min(num_commands, max_threads)
5271

@@ -234,8 +253,7 @@ def run_topp(self, tool: str, input_output: dict, custom_params: dict = {}) -> b
234253
n_processes = max(io_lengths)
235254

236255
# Calculate threads per command based on max_threads setting
237-
from src.common.common import get_max_threads
238-
max_threads = get_max_threads(self.parameter_manager)
256+
max_threads = self._get_max_threads()
239257
parallel_commands = min(n_processes, max_threads)
240258
threads_per_command = max(1, max_threads // parallel_commands)
241259

0 commit comments

Comments
 (0)