Articles of generador de

pausa de rendimiento en Python

De acuerdo con la respuesta a esta pregunta , la interrupción del rendimiento en C # es equivalente a la devolución en python. En el caso normal, el ‘retorno’ de hecho detiene un generador. Pero si su función no hace más que regresar, obtendrá un iterador Ninguno, no un vacío, que se devolverá con el […]

Función de generador vacío de Python

En Python, uno puede definir fácilmente una función de iterador, colocando la palabra clave de rendimiento en el cuerpo de la función, como: def gen(): for i in range(100): yield i ¿Cómo puedo definir una función de generador que no produce ningún valor (genera valores de 0)? El siguiente código no funciona, ya que Python […]

Cómo hacer un bucle a través de un generador

¿Cómo puede uno hacer un ciclo a través de un generador? Pensé de esta manera: gen = function_that_returns_a_generator(param1, param2) if gen: # in case the generator is null while True: try: print gen.next() except StopIteration: break ¿Hay alguna forma más pythonica?

Uso de lookahead con generadores.

He implementado un escáner basado en el generador en Python que tokeniza una cadena en tuplas del formulario (tipo de token, valor del token) : for token in scan(“a(b)”): print token imprimiría (“literal”, “a”) (“l_paren”, “(“) … La siguiente tarea implica analizar la secuencia del token y para eso, necesito poder mirar un elemento hacia […]

¿Cómo dividir un generador de Python de tuplas en 2 generadores separados?

Tengo un generador que es aproximadamente el siguiente: def gen1(): for x, y in enumerate(xrange(20)): a = 5*x b = 10*y yield a, b Desde este generador, me gustaría crear 2 generadores separados de la siguiente manera: for a in gen1_split_a(): yield a for b in gen1_split_b(): yield b ¿Cuál es mi juego, SA?

Anotación de tipo PEP 484 de Python para la expresión del generador

¿Cuál es la anotación de tipo correcta para una función que devuelve una expresión generadora ? p.ej: def foo(): return (x*x for x in range(10)) No puedo averiguar si esto es -> Iterator[int] , -> Iterable[int] , -> Generator[int, None, None] , o alguna otra cosa. Si debería haber una, y preferiblemente solo una, obvia […]

Árbol binario inorder transversal usando generador

Descripción Quiero que mi árbol binario sea iterable para que pueda recorrer cada nodo una vez. Además, inorder es una función generadora que devuelve el Iterator y, por lo tanto, cumple con el contrato de Iterable . Pero mi código a continuación, en lugar de ceder a cada nodo, solo produce un nodo raíz, que […]

Generador Python con llamada recursiva.

Estoy tratando de generar nodos en un árbol con un generador usando una búsqueda previa de profundidad de preorden. El nodo de padres puede tener cualquier número de hijos y los niños se almacenan en una lista. Pensé que este código funcionaría, pero parece que el bucle for está iterando sobre cada niño sin entrar […]

Conexión de transmisión mediante botella de Python, multiprocesamiento y gevent

Tengo una aplicación de Botella que utiliza subprocesos para hacer la mayor parte del trabajo para las solicitudes. Para las rutas que devuelven una sola respuesta, hago algo como lo que se muestra a continuación. @route(‘/index’) def index(): worker = getWorker() return worker.doStuff() Una de mis rutas debe ser un flujo de datos. No puedo […]

Intentando entender el rendimiento como expresión.

Estoy jugando con generadores y expresiones de generadores y no estoy completamente seguro de que entienda cómo funcionan ( algunos materiales de referencia ): >>> a = (x for x in range(10)) >>> next(a) 0 >>> next(a) 1 >>> a.send(-1) 2 >>> next(a) 3 Por lo que parece que generator.send fue ignorado. Eso tiene sentido […]