Ich habe eine Bibliothek in Python erstellt, die Funktionen für den Zugriff auf eine Datenbank enthält. Dies ist eine Wrapperbibliothek für eine Drittanbieter-Anwendungsdatenbank, die aufgrund der Tatsache geschrieben wurde, dass die Drittanbieter-Anwendung keine anständige API bietet. Jetzt ließ ich ursprünglich jede Funktion eine Datenbankverbindung für die Dauer des Funktionsaufrufs öffnen, was in Ordnung war, bis meine Programmlogik verschachtelte Aufrufe der Funktionen verwendete, bei denen ich dann einige tausend Mal eine bestimmte Funktion aufrufen würde. Das war nicht sehr performant. Die Profilerstellung ergab, dass sich der Overhead im Datenbankverbindungsaufbau befand - einmal pro Funktionsaufruf. Also habe ich die offene Verbindung von innerhalb der Funktion (en) auf das Modul selbst verschoben, so dass die Datenbankverbindung geöffnet wurde, wenn das Bibliotheksmodul importiert wurde. Dies gab mir eine akzeptable Leistung.
Jetzt habe ich zwei Fragen dazu. Muss ich mir erstens Sorgen machen, dass ich die Datenbankverbindung nicht mehr explizit schließe und wie kann ich das mit dieser Einrichtung explizit tun? Zweitens: Fällt das, was ich getan habe, irgendwo in die Nähe des Bereichs der bewährten Verfahren und wie könnte ich das anders angehen?
openConnFunktion bereit und lassen Sie den Benutzer sie an jede von ihm aufgerufene Funktion weitergeben, damit er den Zusammenhang in einerwithAnweisung oder in einer anderen Anweisung erfassen kann