Skip to content

profiling

profiling_end(pr: Optional[cProfile.Profile], identifier: str)

Stop profiling and save results with timestamp.

Parameters:

Name Type Description Default
pr Optional[Profile]

Profile object from profiling_start, or None.

required
identifier str

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

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

    Args:
        pr: Profile object from profiling_start, or None.
        identifier: Identifier for the profiling session (e.g., "solve", "initialize").
    """
    if pr is not None:
        pr.disable()
        # Save results so it can be visualized with snakeviz
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        pr.dump_stats(f"profiling/{timestamp}_{identifier}.prof")

profiling_start(profiling_enabled: bool) -> Optional[cProfile.Profile]

Start profiling if enabled.

Parameters:

Name Type Description Default
profiling_enabled bool

Whether to enable profiling.

required

Returns:

Type Description
Optional[Profile]

Profile object if enabled, None otherwise.

Source code in openscvx/utils/profiling.py
def profiling_start(profiling_enabled: bool) -> "Optional[cProfile.Profile]":
    """Start profiling if enabled.

    Args:
        profiling_enabled: Whether to enable profiling.

    Returns:
        Profile object if enabled, None otherwise.
    """
    if profiling_enabled:
        import cProfile

        pr = cProfile.Profile()
        pr.enable()
        return pr
    return None