Creo un dizionario da un database remoto come parte dell'esecuzione della mia applicazione. Questo processo è piuttosto pesante di I/O, quindi ho deciso di creare un'istanza "singleton" di questo dizionario e chiamarla semplicemente come è necessaria nella mia applicazione.Perché un modulo Python si comporta come un singleton?
Il codice simile (in Dictionaries.py
):
state_code_dict = None
def get_state_code_dict():
global state_code_dict
if state_code_dict == None:
state_code_dict = generate_state_code_dict()
return state_code_dict
Ho poi importazione e chiamare la funzione get_state_code_dict()
dove necessario. Ho aggiunto una dichiarazione di stampa per verificare se veniva reinizializzato o riutilizzato e ho trovato che era in fase di riutilizzo (che è la funzionalità che desidero). Perché l'istanza di state_code_dict
è ancora in esecuzione?
Modifica
ho importare la funzione get_state_code_dict
in più file.
perché il codice importato viene eseguito solo la prima volta? – KurzedMetal
modificato per chiarire: Importo il codice in più posizioni (più file includono la funzione 'get_state_code_dict'. –
L'importazione del codice che l'interprete ha già caricato non ricaricherà il codice per impostazione predefinita.È possibile ricaricare deliberatamente un modulo, ma se lo si deve fare per qualsiasi ragione diversa dal fatto che il codice effettivo del modulo potrebbe essere cambiato durante il runtime, è consigliabile utilizzare un diverso linguaggio di programmazione per fare ciò che si vuole fare. –