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.