Python-Thread-Daemon-Eigenschaft

Ich bin ein wenig verwirrt darüber, was ein Faden zu einem Dämon bedeutet. Die Dokumentation sagt dies:

Ein Thread kann als "Daemon Thread" markiert werden. Die Bedeutung dieses Flags ist, dass das gesamte Python-Programm ausläuft, wenn nur Daemon-Threads übrig sind. Der Anfangswert wird vom erstellten Thread übernommen. Das Flag kann über die Daemon-Eigenschaft gesetzt werden.

  • Daemon vs Upstart für Pythonenskript
  • Der serielle Port funktioniert nicht im umgeschriebenen Python-Code
  • Wie bekomme ich Flasche als Dämon aus einem anderen Skript?
  • Paster-Daemon wird nicht heruntergefahren, weil man keine eigene pid-Datei lesen kann
  • Was wäre der einfachste Weg, um ein Python-Skript in Linux zu dämonisieren?
  • Wie man einen neuen, unabhängigen Prozess in Python hervorbringt
  • Ich bin mir nicht sicher, was das anders als ein normaler Thread macht. Ist das sagen, dass dieses Programm nicht immer beenden wird?

    def threadfunc(): while True: time.sleep(1) threading.Thread(target=threadfunc).start() 

    Obwohl der Hauptfaden seine Ausführung beendet hat. Während

     def threadfunc(): while True: time.sleep(1) th = threading.Thread(target=threadfunc) th.daemon = True th.start() 

    Wird sofort beenden

    Ich frage, weil ich eine Situation habe, in der ich in meinem Hauptfaden sys.exit () anrufe, und der Prozess hängt einfach und meine anderen Threads laufen, wie ich das Log sehen kann. Hat das etwas mit sys.exit () zu tun, das mit Threads lebendig ist?

  • Auflisten von Datensätzen in einer Gruppe in HDF5
  • Speichern von Wörterbüchern in Datei (numpy und Python 2/3 freundlich)
  • Laden Matlab spärliche Matrix mit -v7.3 (HDF5) in Python gespeichert und auf sie
  • Pandas read_hdf Abfrage nach Datum und Zeitbereich
  • Lese HDF5-Datei zu pandas DataFrame mit Bedingungen
  • Gibt es eine Analysegeschwindigkeit oder Speicherverbrauch Vorteil bei der Verwendung von HDF5 für große Array-Speicher (statt flache Binärdateien)?
  • 3 Solutions collect form web for “Python-Thread-Daemon-Eigenschaft”

    Ist das sagen, dass dieses Programm nicht immer beenden wird?

    Ja, das Programm wird nicht beenden, probier es einfach aus.

    Ich frage, weil ich eine Situation habe, in der ich in meinem Hauptfaden sys.exit () anrufe, und der Prozess hängt einfach und meine anderen Threads laufen, wie ich das Log sehen kann. Hat das etwas mit sys.exit () zu tun, das mit Threads lebendig ist?

    Ja, auch der exit wird nicht auf andere Threads gestoppt, er hebt einfach SystemExit im SystemExit . So, während der Hauptfaden aufhört (genau wie es auf irgendeine andere unbehandelte Ausnahme geht), werden alle anderen nicht-daemonischen Fäden weiter arbeiten.

    Einstellen von thread.daemon = True erlaubt es dem Hauptprogramm zu thread.daemon = True . Apps warten normalerweise, bis alle Kinderfäden fertig sind, bevor sie fertig sind.

     th.daemon = True #set this thread as a Daemon Thread 

    Du kannst in einem Daemon-Thread als Service denken, das bedeutet, dass es im Hintergrund deines Computers läuft, der verschiedene Aufgaben macht, wie das Indizieren von Dateien, das Analysieren von XML, das Abrufen von Nachrichten usw., alles, was ein langer Prozess ist.

    Dein Haupt-Thread wird fertig und dein Daemon wird immer noch im Hintergrund laufen, das ist der Grund, warum dein Programm aka Main Thread endet, wenn du nur eine Endlosschleife machen willst und du wirst deinen Thread noch laufen lassen. Ein Beispiel für einen Dämon-Thread ist die Garbage Collection.

    Python ist die beste Programmiersprache der Welt.