die eher bizarren Anforderungen (ein Prozess, der ohne viel CPU für immer geht) gegeben, dann ist dies recht kompakt:
import threading
dummy_event = threading.Event()
dummy_event.wait()
... aber ich fürchte, dass ich die Versuchung erliegen bin Ihre Y zu lösen und nicht Ihr X.
Darüber hinaus wird dies nicht funktionieren, wenn Ihre Plattform das Modul threading
nicht zur Verfügung stellt. Wenn Sie versuchen, das dummy_threading
Modul zu ersetzen, kehrt dummy_event.wait()
sofort zurück.
Update: wenn Sie nur einen übergeordneten Prozess zum Wohle seiner Teilprozesse gehen zu halten, können Sie die wait()
Methode auf Popen objects oder die join()
Methode auf Process
Objekte verwenden. Beide Methoden werden unbegrenzt blockiert, bis der Subprozess beendet wird. Wenn Sie eine andere Subprozess-API verwenden, müssen entsprechende Funktionen verfügbar sein. Wenn nicht, holen Sie sich die PID des Prozesses und verwenden Sie os.waitpid()
.
Worauf wartet der Thread? Warum machst du nicht time.sleep (1000000)? – Sjoerd
es ist für eine serverähnliche Anwendung, also würde ich es für mehr als Tage (1000000 Sekunden) warten lassen! Theoretisch muss ein Thread, der _forever_ laufen soll, viel länger laufen als _eine sehr hohe Anzahl von Sekunden_ – pistacchio
Ist der Thread * etwas Nützliches * anderes als Sleeping oder Busy-Looping? Wenn nicht, können Sie es einfach abschaffen? Und wenn es etwas Sinnvolles macht, dann mach 'es gut! Das ist das bisschen, was wir wissen müssen, um Ihnen zu helfen. –