1 votes

Comment contrôler un processus subthread en python ?

Le code d'abord :

'''this is main structure of my program'''

from twisted.web import http
from twisted.protocols import basic
import threading

threadstop = False    #thread trigger,to be done
class MyThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.start()

    def run(self):
        while True:
            if threadstop:
                return
            dosomething()

'''def some function'''

if __name__ == '__main__':
    from twisted.internet import reactor
    t = MyThread()
    reactor.listenTCP(serverport,myHttpFactory())
    reactor.run()

C'est mon premier programme multithread, et je suis heureux qu'il fonctionne comme prévu.Mais je constate maintenant que je ne peux pas le contrôler.Si je l'exécute en avant, Contrôle+C ne peut qu'arrêter le processus principal, et je peux toujours le trouver dans la liste des processus;si je l'exécute en arrière-plan, je dois utiliser kill -9 pid Et je me demande s'il n'y a pas un moyen de contrôler le processus du sousthread par une variable de déclenchement, ou un meilleur moyen d'arrêter l'ensemble du processus autre que le kill -9 Merci.

2voto

Alex Martelli Points 330805

Utiliser le atexit pour enregistrer (dans le fil d'exécution principal) une fonction qui définit le paramètre global threadstop a True ou, plus simplement, de définir le démon de l'objet thread à True afin de ne pas maintenir le processus en vie si le thread principal se termine.

2voto

Jeffrey Jose Points 840

Ce n'est pas une réponse directe à votre question et Alex y a déjà répondu, mais voici une idée.

Je vois que vous utilisez la fonction python threading . Avez-vous essayé d'utiliser twisted.internet.threads ?

Lorsque je me retrouve à utiliser des fils dans un twisted j'accède à l'application twisted.internet.threads

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