Articles of concurrent.futures

Python: concurrent.futures ¿Cómo hacerlo cancelable?

Python concurrent.futures y ProcessPoolExecutor proporcionan una interfaz ordenada para progtwigr y monitorear tareas. Los futuros incluso proporcionan un método .cancel (): Cancelar () : Intenta cancelar la llamada. Si la llamada se está ejecutando actualmente y no se puede cancelar , el método devolverá False; de ​​lo contrario, la llamada se cancelará y el método […]

error de recursión máx. cuando se usa futures.ProcessPoolExecutor pero no futures.ThreadPoolExecutor con envoltorio PRAW

Estoy usando este código para raspar una API: submissions = get_submissions(1) with futures.ProcessPoolExecutor(max_workers=4) as executor: #or using this: with futures.ThreadPoolExecutor(max_workers=4) as executor: for s in executor.map(map_func, submissions): collection_front.update({“time_recorded”:time_recorded}, {‘$push’:{“thread_list”:s}}, upsert=True) Funciona muy bien / rápido con subprocesos pero cuando bash usar procesos obtengo una cola completa y este error: File “/usr/local/lib/python3.4/dist-packages/praw/objects.py”, line 82, in __getattr__ […]

¿Por qué es asyncio.Future incompatible con concurrent.futures.Future?

Las dos clases representan excelentes abstracciones para la progtwigción concurrente, por lo que es un poco desconcertante que no admitan la misma API. En concreto, según la documentación : asyncio.Future es casi compatible con concurrent.futures.Future . Diferencias result() y exception() no toman un argumento de tiempo de espera y generan una excepción cuando el futuro […]

Python ThreadPoolExecutor: ¿se garantiza que la callback se ejecute en el mismo hilo que la función enviada?

En el ThreadPoolExecutor (TPE), ¿se garantiza que la callback siempre se ejecute en el mismo hilo que la función enviada? Por ejemplo, he probado esto con el siguiente código. Lo ejecuté muchas veces y parecía que func y callback siempre se ejecutaban en el mismo hilo. import concurrent.futures import random import threading import time executor […]

Tiempos de espera individuales para concurrent.futures

Veo dos formas de especificar tiempos de espera en concurrent.futures . as_completed() wait() Ambos métodos manejan N futuros de ejecución. Me gustaría especificar un tiempo de espera individual para cada futuro. Caso de uso: El futuro para obtener datos de DB tiene un tiempo de espera de 0,5 segundos. El futuro para obtener datos de […]

¿Cuál es la diferencia entre concurrent.futures y asyncio.futures?

Para aclarar el motivo de esta pregunta: Es confuso usar dos módulos con el mismo nombre. ¿Qué representan ellos que los hace distintos? ¿Qué tarea (s) puede uno resolver que el otro no puede y viceversa?

Cómo romper time.sleep () en un python concurrent.futures

Estoy jugando con concurrent.futures . Actualmente mis futuras llamadas time.sleep(secs) . Parece que Future.cancel () hace menos de lo que pensaba. Si el futuro ya se está ejecutando, entonces time.sleep() no se cancela. Lo mismo para el parámetro de tiempo de espera para wait () . No cancela mi time.sleep() . ¿Cómo cancelar time.sleep() que […]

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 + […]