from threading import Thread, Event
import time
def countdown(n, start_evt):
start_evt.wait()
print('start counting')
while n > 0:
print('T-minus', n)
n -= 1
time.sleep(1)
if n == 96:
start_evt.clear()
start_evt = Event()
print('launching counting')
t = Thread(target=countdown, args=(100, start_evt))
t.start()
time.sleep(5)
start_evt.set()
print('countdown is running')
我是使用 python 食谱的 python 线程的新手。我把start_evt.clear()
定在了一会儿。但是当n==96
这个线程没有再次等待时,为什么?这是在第 500.It 页继续倒计时。
launching counting
countdown is running
start counting
T-minus 100
T-minus 99
T-minus 98
T-minus 97
T-minus 96
T-minus 95
T-minus 94
T-minus 93
T-minus 92
您的循环无法等待事件,因为等待语句在循环之外。
我会这样做:
def countdown(n, start_evt):
print('start counting')
while n > 0:
start_evt.wait()
print('T-minus', n)
n -= 1
time.sleep(1)
if n == 96:
start_evt.clear()
现在,由于wait()
调用位于循环内,因此它会循环,直到事件被清除,然后停止