Valutazione Pigra in Python: Ottimizzazione della Memoria e delle Prestazioni
In questo capitolo viene introdotto il concetto di valutazione pigra (lazy evaluation), una tecnica in cui i dati vengono prodotti solo quando necessario, invece di essere calcolati e memorizzati in anticipo. La valutazione pigra è una caratteristica fondamentale degli iteratori ed è particolarmente utile per lavorare con grandi insiemi di dati o sequenze infinite.
Vantaggi principali:
- Efficienza della memoria: viene generato un solo elemento alla volta;
- Ottimizzazione delle prestazioni: il calcolo avviene solo quando richiesto;
- Supporto per sequenze infinite: è possibile lavorare con sequenze di dimensione arbitraria senza esaurire la memoria.
Creiamo un generatore infinito di lanci di dado che produce risultati casuali su richiesta. In questo modo non sarà mai necessario memorizzare tutti i lanci in memoria, indipendentemente dal numero di lanci effettuati.
12345678910111213141516import random # Infinite dice roller class InfiniteDiceRoller: def __iter__(self): return self def __next__(self): return random.randint(1, 6) # Using the infinite dice roller dice_roller = InfiniteDiceRoller() for i, roll in enumerate(dice_roller): if i >= 10: # Stop after 10 rolls break print(f"Roll {i + 1}: {roll}")
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain more about how lazy evaluation works in other scenarios?
What would happen if we removed the break statement from the loop?
Can you show how to modify the dice roller to simulate a die with a different number of sides?
Fantastico!
Completion tasso migliorato a 3.13
Valutazione Pigra in Python: Ottimizzazione della Memoria e delle Prestazioni
Scorri per mostrare il menu
In questo capitolo viene introdotto il concetto di valutazione pigra (lazy evaluation), una tecnica in cui i dati vengono prodotti solo quando necessario, invece di essere calcolati e memorizzati in anticipo. La valutazione pigra è una caratteristica fondamentale degli iteratori ed è particolarmente utile per lavorare con grandi insiemi di dati o sequenze infinite.
Vantaggi principali:
- Efficienza della memoria: viene generato un solo elemento alla volta;
- Ottimizzazione delle prestazioni: il calcolo avviene solo quando richiesto;
- Supporto per sequenze infinite: è possibile lavorare con sequenze di dimensione arbitraria senza esaurire la memoria.
Creiamo un generatore infinito di lanci di dado che produce risultati casuali su richiesta. In questo modo non sarà mai necessario memorizzare tutti i lanci in memoria, indipendentemente dal numero di lanci effettuati.
12345678910111213141516import random # Infinite dice roller class InfiniteDiceRoller: def __iter__(self): return self def __next__(self): return random.randint(1, 6) # Using the infinite dice roller dice_roller = InfiniteDiceRoller() for i, roll in enumerate(dice_roller): if i >= 10: # Stop after 10 rolls break print(f"Roll {i + 1}: {roll}")
Grazie per i tuoi commenti!