New profiler with output to the CSV file#303
Conversation
Prpht
left a comment
There was a problem hiding this comment.
Wielkie dzięki za robotę przy profilerze - ale wymaga jeszcze troszkę sprzątania, żeby trzymać ogólne konwencje tego repozytorium. Chętnie zmerguję po poprawkach (i tak jak obiecywałem na starcie semestru - rzucę dodatkowym punktem).
| @@ -0,0 +1,164 @@ | |||
| from time import time | |||
There was a problem hiding this comment.
To nie jest część modelu, więc raczej do wyrzucenia do osobnego pod-pakietu ("profiler"?).
| return decorator(_func) if _func else decorator | ||
|
|
||
|
|
||
| PROFILER_SINGLETON = ProfilerContainer() |
There was a problem hiding this comment.
Zamiast jednego singletona pasowałoby umożliwić pobieranie sobie pre-przygotowanego obiektu, podobnie jak w przypadku loggera.
| from os import makedirs, path | ||
| from gc import get_referents | ||
|
|
||
| import sys |
There was a problem hiding this comment.
Importy niezgodne z konwencją repo. Konwencja: importy z biblioteki standardowej (alfabetycznie), pusta linia, importy z bibliotek zależnych, pusta linia, importy z samego GUPB.
| BLACKLIST = type, ModuleType, FunctionType | ||
|
|
||
|
|
||
| def getsize(obj): |
| def header(): | ||
| return ( | ||
| "epoch,step,controller_name,decision_time,memory_before,memory_after," | ||
| + "action_name,exception_returned\n" |
There was a problem hiding this comment.
To mogłoby powstawać dynamicznie w oparciu o nazwy pól w dataclass, tak samo metoda str - obecnie jest sporo powtórzonego kodu.
| self.epoch = 0 | ||
| self.step = 0 | ||
| self.batch_size = batch_size | ||
| self.batch = [] |
| self.batch_size = batch_size | ||
| self.batch = [] | ||
|
|
||
| def __open_file(self): |
There was a problem hiding this comment.
__ sugerują wewnętrzną funkcję o określonym znaczeniu (jak str), dla funkcji "prywatnych" wystarczy jeden _
| @@ -1,4 +1,8 @@ | |||
| [Basic profiler](#profiling-header) | |||
There was a problem hiding this comment.
No i to też może wylądować w odpowiednim pod-pakiecie.
Nowy profiler do celów ogólnej analizy działania botów. Pozwala na zapisywania wyników od razu do formatu CSV