5 votes

Traduire `thread.start_new_thread(...)` vers la nouvelle API de threading

Lorsque j'utilise l'ancien système Python thread API tout fonctionne bien :

thread.start_new_thread(main_func, args, kwargs)

Mais si j'essaie d'utiliser la nouvelle filetage API le processus, qui exécute le thread, se bloque alors qu'il devrait se quitter avec sys.exit(3) :

threading.Thread(target=main_func, args=args, kwargs=kwargs).start()

Comment puis-je adapter le code à la nouvelle API de threading ?

Vous pouvez voir cet exemple dans contexte .

8voto

suzanshakya Points 709

Ce comportement est dû au fait que thread.start_new_thread crée un fil dans daemon mode pendant que threading.Thread crée un fil dans non-daemon mode.
Pour commencer threading.Thread en mode démon, vous devez utiliser la fonction .setDaemon méthode :

my_thread = threading.Thread(target=main_func, args=args, kwargs=kwargs)
my_thread.setDaemon(True)
my_thread.start()

2voto

adw Points 2209

Le programme se termine lorsque tous les threads non-démons sont sortis. Vous pouvez faire en sorte que votre programme secondaire Thread démoniaque en fixant son daemon à la propriété True .

Vous pouvez également remplacer votre appel par sys.exit con os._exit .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X