que tienen una función de generador que es algo como esto:¿Cómo puedo ejecutar el código de inicialización para una función de generador inmediatamente, en lugar de ejecutar la primera llamada?
def mygenerator():
next_value = compute_first_value() # Costly operation
while next_value != terminating_value:
yield next_value
next_value = compute_next_value()
Me gustaría que el paso de inicialización (antes de que el bucle while) para funcionar tan pronto como la función es llamada, en lugar de sólo cuando el generador es primero usado. ¿Cuál es una buena manera de hacer esto?
Quiero hacer esto porque el generador se ejecutará en un subproceso (o proceso, o usos multiprocesamiento por separado) y no utilizaré el retorno durante un tiempo corto, y la inicialización es algo costosa, por lo Me gustaría hacer la inicialización mientras me preparo para usar los valores.
Esta es la manera "correcta". Los otros son hacks. Pueden ser divertidos por sí mismos para crear y usar, más cortos para escribir, pero difíciles de leer y alucinantes para mantener. – jsbueno