J'essayais d'exécuter un script python avec GNU parallel. Tout semble fonctionner, sauf la routine atexit utilisée à l'intérieur du script python. Il semble qu'après ctrl+c, parallel tue le processus python sans donner à python une chance d'appeler la routine atexit enregistrée. Comment faire pour que parallel soit un peu plus gentil envers les processus enfants ?
Voici un exemple pour montrer le comportement.
test_signal.py :
#!/usr/bin/env python3
import time
import sys
import atexit
def cleanup():
print('cleanup called', flush=True)
atexit.register(cleanup)
time.sleep(60)
print('completed process', sys.argv[1])
Testé avec la commande :
chmod +x test_signal.py
./test_signal.py 1 # this works as expected when using ^C
parallel -j 4 ./test_signal.py {} ::: $(seq 1 12) # this one does not