Source code for pytmosph3r.util.profiling

import cProfile
from contextlib import contextmanager
from pathlib import Path
from typing import Optional


[docs] @contextmanager def profiler(filename: Optional[Path] = None) -> cProfile.Profile: """ Profile some part of the code using a context block. .. code-block:: python with profiler() as pr: m = np.random.random((1000,1000)) ** 2 # After the context block, the profile can be accessed. print(pr.stats) Args: filename (Optional[Path]): name of the file where to save the profile Returns: Return the profile of the code previously executed. """ profile = cProfile.Profile() try: profile.enable() yield profile finally: profile.disable() profile.create_stats() if filename is not None: profile.dump_stats(filename)