multiprocessing
Task
class Task()
__init__
def __init__(func: Callable,
args: Optional[tuple] = None,
kwargs: Optional[dict] = None)
__eq__
def __eq__(other)
__hash__
def __hash__()
__repr__
def __repr__()
TaskResult
class TaskResult()
timeout_seconds
timeout_seconds = None
memory_limit_in_gib
memory_limit_in_gib = None
start_time
start_time = None
end_time
end_time = None
elapsed_time
elapsed_time = None
out_of_memory
out_of_memory = None
timed_out
timed_out = None
max_memory_used_in_gib
max_memory_used_in_gib = None
exit_code
exit_code = None
__init__
def __init__(task: Task,
success: bool,
result: Any = None,
exception: Union[Exception, None] = None)
__eq__
def __eq__(other)
__hash__
def __hash__()
__repr__
def __repr__()
execute_task_and_put_in_queue
def execute_task_and_put_in_queue(task: Task,
queue: "Queue[TaskResult]") -> None
TaskWatcher
class TaskWatcher()
process
process = None
start_time
start_time = None
end_time
end_time = None
elapsed_time
elapsed_time = None
__init__
def __init__(task: Task,
task_results_queue: "Queue[TaskResult]",
timeout_seconds: Optional[float] = None,
memory_limit_in_gib: Optional[float] = None,
sleep_time: float = 0.001,
memory_limit_polling_rate: float = 0.1,
auto_start: bool = True)
start_task
def start_task() -> None
terminate_task
def terminate_task() -> None
terminate_task_with_timeout
def terminate_task_with_timeout() -> None
terminate_task_with_out_of_memory
def terminate_task_with_out_of_memory() -> None
clean_watcher_queue
def clean_watcher_queue()
watch_task
def watch_task() -> None
update_queue
def update_queue() -> None
psutil
bytes_to_gigibytes
def bytes_to_gigibytes(num_bytes: int) -> float
get_total_memory_usage_in_gib
def get_total_memory_usage_in_gib(pid: Optional[int]) -> float
Calculate the total memory usage of a process and its child processes in gigibytes (GiB).
Arguments:
pidint, optional - The process ID for which memory usage is to be calculated. If None, returns 0.0.
Returns:
float- The total memory usage of the process and its children in GiB. If pid is None, returns 0.0.
get_available_memory_bytes
def get_available_memory_bytes() -> int
Returns the available memory in bytes.
get_available_memory_gib
def get_available_memory_gib() -> float
Returns the available memory in gigabytes.
GlasswallProcessManager
class GlasswallProcessManager()
__init__
def __init__(max_workers: Optional[int] = None,
worker_timeout_seconds: Optional[float] = None,
memory_limit_in_gib: Optional[float] = None)
__enter__
def __enter__()
__exit__
def __exit__(exc_type, exc_val, exc_tb)
queue_task
def queue_task(task: Task)
as_completed
def as_completed() -> Generator[TaskResult, None, None]
start_tasks
def start_tasks()
wait_for_completed_process
def wait_for_completed_process()
remove_completed_active_processes
def remove_completed_active_processes()
clean_task_results_queue
def clean_task_results_queue()