python - ¿Cuál es la diferencia entre concurrent.futures y asyncio.futures?
python-3.x module (2)
De los docs :
[
asyncio
proporciona una] Clase futura que imita la del módulo concurrent.futures, pero adaptada para su uso con el bucle de eventos;
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?
La documentación de asyncio
cubre las diferencias:
clase
asyncio.Future(*, loop=None)
Esta clase es casi compatible con
concurrent.futures.Future
.Diferencias
result()
yexception()
no toman un argumento de tiempo de espera y generan una excepción cuando el futuro aún no está terminado.- Las devoluciones de
add_done_callback()
registradas conadd_done_callback()
siempre se llaman a través del bucle de eventoscall_soon_threadsafe()
.- Esta clase no es compatible con las funciones
wait()
yas_completed()
en el paqueteconcurrent.futures
.Esta clase no es segura para subprocesos.
Básicamente, si está utilizando ThreadPoolExecutor
o ProcessPoolExecutor
, o si desea usar un Future
directamente para la concurrencia basada en subprocesos o en procesos, use concurrent.futures.Future
. Si está usando asyncio
, use asyncio.Future
.