ultiprocesamiento de Python: abortar mapa en el primer error secundario

¿Cuál es la forma correcta de abortar el multiprocesamiento cuando uno de los niños aborta y / o lanza una Excepción?

Encontré varias preguntas al respecto manejo de errores de multiprocesamiento genérico, how para cerrar el grupo de multiprocesamiento en excepción pero sin respuesta, ...), pero no hay una respuesta clara sobre cómo detener el multiprocesamiento en la excepción secundaria.

Por ejemplo, espero el siguiente código:

def f(x):
    sleep(x)
    print(f"f({x})")
    return 1.0 / (x - 2)


def main():
    with Pool(4) as p:
        try:
            r = p.map(f, range(7))
        except Exception as e:
            print(f"oops: {e}")
            p.close()
            p.terminate()
    print("end")


if __name__ == '__main__':
    main()

Para salida:

f(0)
f(1)
f(2)
oops: float division by zero
end

En cambio, se aplicaf función en todos los elementos antes de detectar / manejar la excepción:

f(0)
f(1)
f(2)
f(4)
f(3)
f(5)
f(6)
oops: float division by zero
end

¿No hay alguna forma de detectar la excepción directamente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta