Vu que c’était votre code je pensais avoir une réponse, mais merci ceci dit.
Je suis revenu que récemment sur mon code, vu qu’il ne se produite que lorsque je sors du programme via ctrl+C
Apparemment si je ne me plante pas pour la solution, cela viendrait du positionnement des .join(), que j’ai mis comme sur votre exemple après finally. Cela me renvoie une erreur atexit. En les mettant à la fin du try, il semblerait que l’on sorte correctement du programme, avec un keyboardinterrupt
Cordialement.
]]>Dans mon cas j’utilise inotify d’un coté, et j’ai lancé un processus enfant qui va analyser un fichier (de sorte que si l’ordi s’éteint l’analyse puisse reprendre) qui se remplit en fonction de ce que relève inotify.
Or, par le fruit du hasard il m’est apparu une erreur bête, peu gênante mais qui m’a amené à me poser cette question, en effet le répertoire était mal orthographié pour le fichier, le processus enfant a pris une erreur mais le script lui en revanche ne s’est pas arrêté.
]]>Pour l’instant je fais ça, dans le fichier principal, qui lance la fenêtre:
if __name__ == '__main__':
os.setpgrp() # create new process group, become its leader
try:
main()
finally:
os.killpg(0, signal.SIGKILL) # kill all processes in my group
Mais c’est un peu bourrin, je suis obligé de fermer la fenêtre.
]]>Une question con mais je suis bloqué là. Comment je fais si j’utilise cette méthode et que je veux tout tuer, arrêter tous les workers, et terminer mon script ?
Je cherche une méthode pas trop bourrin bien sûr, car j’utilise plus ou moins votre exemple de code au sein d’une GUI.
]]>