Używam pandas.DataFrame
w kodzie wielowątkowym (w rzeczywistości niestandardowej podklasy DataFrame
o nazwie Sound
). Zauważyłem, że mam wyciek pamięci, ponieważ wykorzystanie pamięci mojego programu zwiększa się stopniowo o ponad 10 milionów, aby w końcu osiągnąć ~ 100% pamięci komputera i awarię.Przeciek pamięci przy użyciu pandy danych
użyłem objgraph spróbować śledzenia ten przeciek, i okazało się, że liczba przypadków MyDataFrame
dzieje się cały czas, gdy nie powinno: każdy wątek w swojej metodzie run
tworzy instancję, sprawia, że kilka obliczeń, oszczędza wynik w pliku i kończy działanie ... więc nie należy przechowywać żadnych odniesień.
Korzystanie objgraph
Okazało się, że wszystkie ramki danych w pamięci mają podobny wykres odniesienia:
nie mam pojęcia, czy to normalne czy nie ... Wygląda na to, co jest utrzymanie moje obiekty w pamięci. Każdy pomysł, porady, wgląd?
Czy jest możliwe dołączenie krótkiego fragmentu kodu do replikacji? –
Czy próbowałeś ręcznie uruchomić śmieciarz? Jeśli masz odwołania kołowe, może być wymagane zwolnienie pamięci. 'import gc; gc.collect() ' – lgautier