6
votes

Le fil terminé par Python ne peut pas redémarrer

J'ai un fil qui est exécuté lorsque une action se produit. Compte tenu de la logique du programme, le thread ne peut pas être démarré pendant que l'autre instance est toujours en cours d'exécution. Pourtant, lorsque je l'appelle une seconde fois, je reçois une erreur "RuntimeError: Thread déjà démarré". J'ai ajouté un chèque pour voir si elle est réellement en vie à l'aide de la fonction thread.is_alive () et est effectivement morte.

Qu'est-ce que je fais mal?

Je peux fournir plus de détails que nécessaire.


0 commentaires

3 Réponses :


11
votes

Les threads ne peuvent pas être redémarrés. Vous devez recréer le fil afin de recommencer.


0 commentaires

2
votes

Vous pouvez essayer de définir xxx

il n'est pas documenté officiellement, alors utilisez-le sur vos propres risques! :)


1 commentaires

J'utilise déjà _Thread__Stop () pour commencer ... Ajout on ne semble pas si mal, mais rend mon programme vraiment hacky ...



7
votes

du Python Documentation: start () Démarre l'activité du fil. Cela doit être appelé au plus une fois par objet de thread. Il organise la méthode de l'objet () à appeler dans un fil de contrôle séparé.

Si vous dérivez une classe de la filetage.thread, vous pouvez ajouter un fichier .__ init __ (auto) à la fin de votre méthode d'exécution et vous pourrez appeler recommencer et ce sera se réinitialiser automatiquement lorsqu'il est fait.


0 commentaires