2012-01-21 11 views
10

Może ktoś sugerują, co byłoby najlepsze praktyki lub odpowiedniej biblioteki w celu określenia:Jak określić koszt procesora i pamięci dla funkcji?

  1. Ilość cykli procesora wykorzystywanych podczas wykonywania funkcji Pythona?
  2. Ilość Pamięć używana przez tę samą funkcję Python?

I wyglądało na Guppy i Meliady, ale nadal nie można uzyskać granulowany do poziomu funkcji? Czy czegoś brakuje?

UPDATE Potrzeba zadając to pytanie jest do rozwiązania konkretnej sytuacji, która jest scenariusz, że mamy zbiór rozproszonych zadań uruchomionych w przypadkach chmurze, a teraz musimy zreorganizować rozmieszczenie zadań na Właściwe typy instancji w klastrze, na przykład zadania funkcjonalne zużywające dużo pamięci będą umieszczane na większych instancjach pamięci i tak dalej. Kiedy mam na myśli zadania (zadania związane z selerem), są to tylko proste funkcje, dla których musimy teraz profilować wykorzystanie ich użycia.

Dzięki.

+10

Jeśli musisz się martwić o te rzeczy tak precyzyjnie, to Python nie jest dla ciebie językiem. –

+2

"Czy czegoś brakuje?" Tak. Tęskniłeś za faktem, że Python opiera się na jednej z wielu implementacji: CPython, Jython, PyPy, z których każda jest inna. Większość implementacji bezpośrednio lub pośrednio opiera się na bibliotekach GNU C, które różnią się od wydania do wydania. Będzie bardzo trudno zmierzyć cykle procesora, ponieważ w grę wchodzi tak wiele warstw oprogramowania. Czego próbujesz się nauczyć? Co chcesz wiedzieć? Jaką decyzję podejmujesz? –

+0

jak @ S.Lott powiedział, Trudno będzie określić cykle procesora funkcji EXACT, ponieważ nawet jeśli można zmierzyć, wyniki nie będą dokładne. – user779444

Odpowiedz

7

Możesz zajrzeć na CPU profiler dla Pythona:
http://docs.python.org/library/profile.html
Przykład wyjście cProfile.run(command[, filename])

2706 function calls (2004 primitive calls) in 4.504 CPU seconds 

Ordered by: standard name 

ncalls tottime percall cumtime percall filename:lineno(function) 
    2 0.006 0.003 0.953 0.477 pobject.py:75(save_objects) 
    43/3 0.533 0.012 0.749 0.250 pobject.py:99(evaluate) 
... 

Również memory potrzebuje profilera też:
otwarte profilarek źródło: PySizer i Heapy

+0

Dzięki @Ayoubi dla powyższego wskaźnika, to na pewno trochę pomaga. Dzięki jeszcze raz. –

+1

@ayoubi: Wyświetla czas wykonania, ale co z procesorami (wykorzystanie procesora), pamięcią (wykorzystanie pamięci)? –

Powiązane problemy