Skip to content

profiling

profiling_end(ctx: Optional[tuple[cProfile.Profile, Callable[[str], str]]], identifier: str)

Stop profiling and save results.

Parameters:

Name Type Description Default
ctx Optional[tuple[Profile, Callable[[str], str]]]

(Profile, session) tuple from profiling_start, or None.

required
identifier str

Identifier for the profiling stage (e.g., "solve", "initialize").

required
Source code in openscvx/utils/profiling.py
def profiling_end(ctx: Optional[tuple[cProfile.Profile, Callable[[str], str]]], identifier: str):
    """Stop profiling and save results.

    Args:
        ctx: (Profile, session) tuple from profiling_start, or None.
        identifier: Identifier for the profiling stage (e.g., "solve", "initialize").
    """
    if ctx is not None:
        pr, session = ctx
        pr.disable()
        pr.dump_stats(session(identifier))

profiling_start(profiling_enabled: bool, session: Optional[Callable[[str], str]] = None) -> Optional[tuple[cProfile.Profile, Callable[[str], str]]]

Start profiling if enabled.

Parameters:

Name Type Description Default
profiling_enabled bool

Whether to enable profiling.

required
session Optional[Callable[[str], str]]

Existing session to reuse. If None, a new session is created.

None

Returns:

Type Description
Optional[tuple[Profile, Callable[[str], str]]]

(Profile, session) tuple if enabled, None otherwise.

Source code in openscvx/utils/profiling.py
def profiling_start(
    profiling_enabled: bool, session: Optional[Callable[[str], str]] = None
) -> Optional[tuple[cProfile.Profile, Callable[[str], str]]]:
    """Start profiling if enabled.

    Args:
        profiling_enabled: Whether to enable profiling.
        session: Existing session to reuse. If None, a new session is created.

    Returns:
        (Profile, session) tuple if enabled, None otherwise.
    """
    if profiling_enabled:
        if session is None:
            session = _create_session()
        pr = cProfile.Profile()
        pr.enable()
        return (pr, session)
    return None