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.

  • Welchen Unterschied macht es, wenn ich python Faden als Deamon setze
  • Python-Daemon, um einen Ordner zu sehen und eine Datenbank zu aktualisieren
  • Rufen Sie einen Python-Unterprozess als Daemon an und beenden Sie
  • Wie löst man abgelösten Hintergrundprozess auf Linux entweder in bash oder python
  • Running Python im Hintergrund auf OS X
  • Celery daemon - Erlaubnis verweigert auf Protokolldatei
  • 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?

  • H5py: Zusammengesetzte Datentypen und Skalen-Offset in der Kompressionspipeline
  • GIL für IO beschränkten Thread in C-Erweiterung (HDF5)
  • Konvertieren Sie große csv zu hdf5
  • Schnelles Lesen der angegebenen Spalten in df mit pandas.to_hdf
  • Wie man einen benutzerdefinierten Komprimierungsfilter in h5py spezifiziert
  • Auflisten von Datensätzen in einer Gruppe in HDF5
  • 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.