¿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 Python 3, así que supongo que es mejor.

Las motivaciones para los valores concurrentes están cubiertos en el PEP .

En mi experiencia práctica, concurrent.futures proporciona un modelo de progtwigción más conveniente para situaciones de seguimiento y supervisión de tareas de larga ejecución. Un progtwig que escribí recientemente utilizando concurrent.futures implicaba monitorear un directorio para los archivos entrantes en una ventana de 2 a 3 horas, traducir cada archivo cuando llega a una tarea, enviarlo y así sucesivamente. Los objetos futuros devueltos por ProcessPoolExecutor permiten realizar un seguimiento del estado de la tarea, proporcionar informes de estado intermedios, etc. de manera conveniente.