如果您明确地调用
time.sleep()
作为线程的一部分(比如轮询一些外部服务),Phillipe方法的一个改进是在
event
的
wait()
方法无论你在哪里
sleep()
例如:
import threading
class KillableThread(threading.Thread):
def __init__(self, sleep_interval=1):
super().__init__()
self._kill = threading.Event()
self._interval = sleep_interval
def run(self):
while True:
print("Do Something")
# If no kill signal is set, sleep for the interval,
# If kill signal comes in while sleeping, immediately
# wake up and handle
is_killed = self._kill.wait(self._interval)
if is_killed:
break
print("Killing Thread")
def kill(self):
self._kill.set()
然后运行它
t = KillableThread(sleep_interval=5)
t.start()
# Every 5 seconds it prints:
#: Do Something
t.kill()
#: Killing Thread
使用的好处
WAIT()
而不是
睡眠()
定期检查事件是,您可以在较长的睡眠时间间隔内编程,线程几乎立即停止(否则
小精灵
在我看来,处理exit的代码要简单得多。