wie memory leak in python script finden?

2 Antworten

Naja, wenn Dein Pythoninterpreter ein memleak hat, dann wirst Du ncits dagegen machen können, ansich räumt die GC alsweit möglich auf. Solltest Du aberr immer wiedr z.B Dateien öffnen, ohne die Handles/Resourcen freizugeben, sieht das schon anders aus.

Hast DU mal geschaut, ob es wirklich das Script ist, oder ob vielleicht FFox das Problemkidn ist?

Sven361 
Fragesteller
 21.01.2023, 00:45

Ich hab die Prozesse im Task Manager ueber mehrere Tage verglichen und firefox und WebExtensions bleiben von der memory Nutzung gleich, dann hab Ich noch zwei mal Web Content und nur eins von beiden steigt ueber mehrere tage, das andere bleibt gleich.

0
Sven361 
Fragesteller
 21.01.2023, 01:11
@KarlRanseierIII

ja mit dem script startet er immer zwei mal Web Content obwohl ich nur eine seite immer nutze

0

Im Python Script selber sollten keine Memory Leaks entstehen. Die Variablen in Python werden automatisch verwaltet und der Speicher wird aufgeräumt.

Die Memory Leaks müssen entweder direkt mit Interpreter entstehen oder mit einer Abhängigkeit, die z.B. C/C++ Code benutzt.

Schritt 1 wäre alle Abhängigkeit zu aktualisieren. Dazu gehört Python, der Interpreter, die Python Module und auch Firefox, welchen du über Selenium benutzt. Eventuell sind die Memory Leaks bekannte Fehler, die bereits behoben wurden.

Bei Schritt 2 solltest du die Objekte von den Abhängigkeiten überprüfen. Musst du die Objekte eventuell selber aufrufen? Gibt es eine dispose, free oder clean Methode?

Auch wenn du damit nicht das Problem findest, könntest du dein Programm regelmäßig, z.B. täglich, neustarten lassen. Das Betriebssystem kümmert sich beim Beenden des Programmes um die Leaks und gibt den Speicher frei. Damit kannst du ein unvorhersehbares Verhalten ausschließen, wenn der RAM irgendwann voll ist.

Sven361 
Fragesteller
 21.01.2023, 01:09

ich starte das script immer ueber die konsole mit python3 und da hab ich die neuste Version und praw, selenium auch.

Im Task Manager liegt das Problem nicht bei firefox oder WebExtensions, sondern bei einen der zwei Web Content Anwendung. Ich weiss nicht genau was sie mit Schritt 2 genau meinen.

koennte es daran liegen das ich das script mit dem starte?

options = Options()

options.headless = True

driver = webdriver.Firefox(options=options)

0