为什么 Event 对象不能再次等待?
Why Event object can not been wait again?
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 cookbook.I 在 while.But 中设置 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()
调用在 内部 循环中,它循环直到事件被清除,然后停止
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 cookbook.I 在 while.But 中设置 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()
调用在 内部 循环中,它循环直到事件被清除,然后停止