Articles of concurrent.futures

Obtención del número de línea original para excepción en concurrent.futures

Ejemplo de uso de concurrent.futures (backport para 2.7): import concurrent.futures # line 01 def f(x): # line 02 return x * x # line 03 data = [1, 2, 3, None, 5] # line 04 with concurrent.futures.ThreadPoolExecutor(len(data)) as executor: # line 05 futures = [executor.submit(f, n) for n in data] # line 06 for future […]

Utilizando correctamente loop.create_future

Estaba leyendo la documentación de Python y el libro de PyMotW tratando de aprender Async / Await, Futures, and Tasks. Documentación de Coroutines y Tareas : Normalmente, no es necesario crear objetos futuros en el código de nivel de aplicación. A partir de la documentación futura se enuncia lo siguiente: loop.create_future () Cree un objeto […]

Detectar tareas fallidas en concurrent.futures

He estado utilizando concurrent.futures, ya que tiene una interfaz simple y permite al usuario controlar fácilmente el número máximo de subprocesos / procesos. Sin embargo, parece que concurrent.futures oculta las tareas fallidas y continúa el hilo principal después de que todas las tareas hayan finalizado o hayan fallado. import concurrent.futures def f(i): return (i + […]

Ejecución paralela de Python con selenium.

Estoy confundido acerca de la ejecución paralela en python usando selenium. Parece que hay algunas maneras de hacerlo, pero algunas parecen desactualizadas. Me pregunto cuál es la última forma de hacer una ejecución paralela utilizando selenium. Hay un módulo de python llamado python-wd-parallel que parece tener alguna funcionalidad para hacer esto, pero es de 2013, […]

¿Cómo envolver el futuro personalizado para usar con asyncio en Python?

Hay muchas bibliotecas que usan su versión personalizada de Future . kafka y s3transfer son solo dos ejemplos: todas sus clases personalizadas del futuro tienen un object como superclase. No es sorprendente que no pueda llamar directamente a asyncio.wrap_future() sobre dichos objetos y no puede usar await con ellos. ¿Cuál es la forma correcta de […]

¿Cómo puedo cancelar una tarea asíncrona colgada en un tornado, con un tiempo de espera?

Mi configuración es Python Tornado Server, que procesa tareas de forma asíncrona con un ThreadPoolExecutor . En algunas condiciones, la tarea puede convertirse en un bucle infinito. Con el decorador with_timeout , he logrado detectar la excepción de tiempo de espera y devolver un resultado de error al cliente. El problema es que la tarea […]

Cómo generar futuro solo si hay trabajadores libres disponibles

Estoy intentando enviar información extraída de las líneas de un archivo grande a un proceso que se ejecuta en algún servidor. Para acelerar esto, me gustaría hacer esto con algunos hilos en paralelo. Usando el backport Python 2.7 de concurrent.futures intenté esto: f = open(“big_file”) with ThreadPoolExecutor(max_workers=4) as e: for line in f: e.submit(send_line_function, line) […]

Función que multiprocesa otra función.

Estoy realizando análisis de series de tiempo de simulaciones. Básicamente, está haciendo las mismas tareas para cada paso de tiempo. Como hay un gran número de pasos de tiempo, y como el análisis de cada uno de ellos es independiente, quise crear una función que pueda multiprocesar otra función. Este último tendrá argumentos, y devolverá […]

¿Cuál es la diferencia entre multiproceso de python y concurrent.futures?

Una forma sencilla de implementar multiprocesamiento en python es from multiprocessing import Pool def calculate(number): return number if __name__ == ‘__main__’: pool = Pool() result = pool.map(calculate, range(4)) Una implementación alternativa basada en futuros es from concurrent.futures import ProcessPoolExecutor def calculate(number): return number with ProcessPoolExecutor() as executor: result = executor.map(calculate, range(4)) Ambas alternativas hacen esencialmente […]

¿Cuáles son las ventajas de concurrent.futures sobre el multiprocesamiento en Python?

Estoy escribiendo una aplicación en Python y necesito ejecutar algunas tareas simultáneamente. El módulo multiprocesamiento ofrece la clase Process y el módulo concurrent.futures tiene la clase ProcessPoolExecutor. Ambos parecen usar múltiples procesos para ejecutar sus tareas, pero sus API son diferentes. ¿Por qué debería usar uno sobre el otro? Sé que concurrent.futures se agregó en […]