L'elaborazione della pipeline dei dati può essere effettuata sia,
utilizzando i generatori solo
Generatorediesempionellapipeline:
defgrep(source,pattern=None):patternObject=re.compile(pattern)forlineinsource:ifpatternObject.search(line):yieldline
o
utilizzandolecoroutinesolo
Esempiodicoroutineinpipeline:
@coroutinedefgrep(pattern):print"Looking for %s" % pattern
while True:
line = (yield)
if pattern in line:
print line,
I generatori possono essere usati per multiplexare dati da più fonti, usando thread.
Igeneratoripossonoessereutilizzatipertrasmetteredatiapiùutenti.
I generatori sono ugualmente potenti nella programmazione simultanea
Domanda:
Perché abbiamo bisogno di couroutine usando send()
(per es: python)? Quando usare la coroutine sul generatore?