from threading import Thread, current_thread
def hello():
print("hello, world")
t = threading.Timer(3.0, hello)
t.start()
print current_thread().name
hello()
Spowoduje to utworzenie nowego wątku okresowo co3 sekundy. Chcę wiedzieć, czy utworzony wątek wygasł, a następnie ponownie zostanie utworzony nowy wątek. Mogę zobaczyć nazwę wątku jako „Thread-1”, „Thread-2”, „Thread-3” i tak dalej. Chcę wiedzieć, czy „Thread-1” ostatecznie zakończy działanie, a następnie zostanie utworzony nowy wątek, tj. „Thread-2” lub nadal „Thread-1” pozostanie aktywny. Proszę o pomoc.
Odpowiedzi:
1 dla odpowiedzi № 1Twoje wątki zakończą się po ich zakończeniu. W rzeczywistości, ponieważ polecenie drukowania jest ostatnim wierszem hello (), oznacza to, że wątek kończy się, gdy tylko wyświetli swoją nazwę. Możesz użyć threading.enumerate()
aby wyświetlić wszystkie działające wątki:
from threading import Thread, current_thread, Timer, enumerate
def hello():
print("hello, world")
t = Timer(3.0, hello)
t.start()
print enumerate()
print current_thread().name, "exiting"
hello()
Jedynym wyjątkiem jest główny wąteknie wychodzi, ale pozostaje w stanie zatrzymania, dopóki program nie zakończy działania, co nigdy nie nastąpiłoby z tym kodem, ale mimo to. Wszystkie inne wątki wykonują swoją pracę, a następnie wychodzą.
Czy to odpowiada na twoje pytanie?
Hannu