Elaborazione efficiente e memorizzazione dello stato globale

0

Sto lavorando su un problema grafico che è speciale nel senso che i nodi vengono calcolati solo quando richiesto. Questo perché il grafico è così grande che l'intero grafico non si adatta alla memoria.

Quindi, nel mio codice ho solo una classe nodo e un metodo computeChildren () che viene chiamato solo quando necessario. Ho anche alcuni parametri globali che devono essere calcolati quando il initNode è inizializzato. Sto cercando di capire il modo migliore per memorizzare questi parametri. Ho pensato di aggiornare i parametri nel metodo init della classe, ma questo fa sì che gli stessi calcoli vengano ripetuti ogni volta che viene calcolato un nuovo nodo.

Sto usando python3, qualcuno potrebbe suggerire il modo giusto per farlo ...

UPD: i valori usati per inizializzare il nodo init decidono la struttura del grafico, questa informazione è uguale per tutti i nodi.

Alcuni dettagli riguardanti il mio background di codifica: Ho codificato per lo più in C con alcune competenze limitate in C ++.

    
posta vorzawk 27.09.2017 - 18:37
fonte

2 risposte

1

Se si tratta di uno stato globale, non memorizzarlo nella classe del nodo. Memorizzalo nell'oggetto che rappresenta l'intero grafico e fai riferimento alla singola istanza di quell'oggetto negli oggetti del nodo.

    
risposta data 27.09.2017 - 18:50
fonte
0

Il suggerimento di aggiungere una classe che rappresenta l'intero grafico ha senso. Le istanze di questa classe possono occuparsi del calcolo dei parametri quando e solo quando devono essere calcolati. Evita anche la necessità di uno stato globale, che è un problema di per sé.

class Graph:
    def __init__(self):
        self.first_node = Node()
        self.parameters = compute_parameters()
    
risposta data 27.09.2017 - 21:13
fonte

Leggi altre domande sui tag