Ho creato una libreria in Python che contiene funzioni per accedere a un database. Questa è una libreria wrapper attorno a un database di applicazioni di terze parti, scritta a causa del fatto che l'applicazione di terze parti non offre un'API decente. Inizialmente, ho lasciato che ogni funzione aprisse una connessione al database per la durata della chiamata della funzione, che era OK, finché la logica del mio programma non ha usato chiamate nidificate alle funzioni in cui avrei chiamato una funzione particolare qualche migliaio di volte. Questo non era molto performante. La creazione di profili ha mostrato che l'overhead era nell'impostazione della connessione al database, una volta per chiamata di funzione. Così ho spostato la connessione aperta dalla / e funzione / e al modulo stesso, in modo che la connessione al database fosse aperta quando il modulo della libreria è stato importato. Questo mi ha dato una performance accettabile.
Ora ho due domande a riguardo. In primo luogo, devo preoccuparmi che non stia più chiudendo esplicitamente la connessione al database e come potrei farlo esplicitamente con questo set-up? In secondo luogo, ciò che ho fatto si colloca ovunque vicino al regno delle buone pratiche e come potrei altrimenti avvicinarmi a questo?