Articles of generador de

Python: ¿Por qué diferentes hilos obtienen su propia serie de valores de un generador?

Estoy aprendiendo multiproceso en Python. Quiero saber cómo proporcionar datos a varios subprocesos utilizando generadores. Esto es lo que escribí: import threading data = [i for i in xrange(100)] def generator(): for i in data: yield i class CountThread(threading.Thread): def __init__(self, name): threading.Thread.__init__(self) self.name = name def run(self): for i in generator(): print ‘{0} {1}’.format(self.name, […]

La expresión del generador nunca genera StopIteration

Inspirado por mi propia respuesta , ni siquiera entendía cómo funcionaba yo, considere lo siguiente: def has22(nums): it = iter(nums) return any(x == 2 == next(it) for x in it) >>> has22([2, 1, 2]) False Esperaba que se levantara una StopIteration , ya que al llegar a 2 , a next(it) estaría next(it) avanzaría un […]

Aplicar reducir en la salida del generador con multiprocesamiento

Tengo una función de generador (Python) que funciona así def Mygenerator(x, y, z, …): while True: # code that makes two matrices based on sequences of input arrays yield (matrix1, matrix2) Lo que quiero hacer es agregar la salida de este generador. Esta línea hace el trabajo: M1, M2 = reduce(lambda x, y: x[0] + […]

Python: hacer un generador de listas JSON serializable

¿Cómo puedo concat una lista de archivos JSON en una enorme matriz JSON? Tengo 5000 archivos y 550 000 artículos de lista. Mi primer bash fue usar jq , pero parece que jq -s no está optimizado para una entrada grande. jq -s -r ‘[.[][]]’ *.js Este comando funciona, pero tarda demasiado en completarse y […]

Python: ¿hay un analizador XML implementado como un generador?

Me gustaría analizar un gran archivo XML “sobre la marcha”. Me gustaría usar un generador de python para realizar esto. He intentado “iterparse” de “xml.etree.cElementTree” (que es realmente bueno) pero todavía no es un generador. ¿Otras sugerencias?

Python – La mejor manera de leer un archivo y romper las líneas por un delimitador

¿Cuál es la mejor manera de leer un archivo y romper las líneas por un delimitador? Los datos devueltos deben ser una lista de tuplas. ¿Puede este método ser golpeado? ¿Se puede hacer esto más rápido / usando menos memoria? def readfile(filepath, delim): with open(filepath, ‘r’) as f: return [tuple(line.split(delim)) for line in f]

Eliminar objetos JSON duplicados de la lista en python

Tengo una lista de dict donde un valor particular se repite varias veces, y me gustaría eliminar los valores duplicados. Mi lista: te = [ { “Name”: “Bala”, “phone”: “None” }, { “Name”: “Bala”, “phone”: “None” }, { “Name”: “Bala”, “phone”: “None” }, { “Name”: “Bala”, “phone”: “None” } ] Función para eliminar valores duplicados: […]

¿Cuál es la forma más pythonica de ejecutar una expresión generadora?

Cada vez más características de Python se convierten en “ejecutables perezosos”, como expresiones generadoras y otros tipos de iteradores. A veces, sin embargo, me veo con ganas de rodar un bucle “for” de una línea, solo para realizar alguna acción. ¿Cuál sería la cosa más pythonica para que el bucle se ejecute realmente? Por ejemplo: […]

¿Puede un método dentro de una clase ser generador?

¿Es aceptable / Pythonic usar un método en una clase como generador? Todos los ejemplos que he encontrado muestran la statement de rendimiento en una función, no en una clase. Aquí hay un ejemplo de código de trabajo: class SomeClass(object): def first_ten(self): for i in range(10): yield i def test(self): for i in self.first_ten(): print […]

¿Cómo puedo ejecutar el código de inicialización para una función de generador inmediatamente, en lugar de en la primera llamada?

Tengo una función de generador que va algo como esto: 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 del bucle while) se ejecute tan pronto como se llame a la función, en lugar de solo cuando se use […]