Que tus "futures" de larga duración no impidan que tu programa Python termine (Python 3.7)

Advertencia

El uso de las técnicas descritas en este artículo es peligroso. Más vale que sepas lo que estás haciendo.

En Que tus "futures" de larga duración no impidan que tu programa Python termine explico cómo conseguir que un programa Python termine, aunque tenga Futures pendientes de ejecución. Más te vale que tengas buenos motivos para ello y que entiendas los riesgos, pero conocer esta técnica es útil cuando la necesitas.

El código propuesto no funciona bajo Python 3.7, a punto de salir, por su uso del nuevo PEP 562 para acelerar la importación del módulo concurrent.futures. Tendremos que importar concurrent.futures.thread y concurrent.futures.process de forma explícita.

Es decir, en Python 3.6 hacíamos algo así:

import concurrent.futures
import atexit
atexit.unregister(concurrent.futures.thread._python_exit)
atexit.unregister(concurrent.futures.process._python_exit)

En el nuevo Python 3.7 tendremos que hacer lo siguiente:

import concurrent.futures.thread
import concurrent.futures.process
import atexit
atexit.unregister(concurrent.futures.thread._python_exit)
atexit.unregister(concurrent.futures.process._python_exit)

Problema solucionado. De momento.