Wpis z mikrobloga

Mam dużą aplikację w #python i działa ona powoli. Chciałbym zobaczyć, która funkcja wywołuje jaką funkcję i ile czasu to zajmuje. Obecnie używam time.time(), ale szczerze mówiąc, mam setki funkcji i nie mogę teraz analizować każdej z nich w ten sposób. Czy istnieje jakiś profiler w Pythonie, który może mi w tym pomóc?

#programowanie #programista15k
  • 8
@pyroxar: Pytasz serio? https://docs.python.org/3/library/profile.html Popełniłem jakiś czas temu taki magiczny dekorator:

import cProfile
from pstats import SortKey
from typing import Callable, TypeVar

T = TypeVar('T')

def profiler(func: Callable) -> Callable[[], T]:
def inner(*args, **kwargs) -> Callable[[], T]:
return flat_profile(lambda: func(*args, **kwargs))

return inner

def flat_profile(action: Callable[[], T]) -> T:
with cProfile.Profile() as pr:
result = action()
pr.print_stats(SortKey.TIME)
return result

Wrzucasz sobie z czymś takim @profiler nad funkcje w programie i za