要根据事件停止毫秒sleep,您可以使用线程的join()
方法
import threading
import time
# 自定义事件类
class Event:
def __init__(self):
self.is_set = False
def set(self):
self.is_set = True
def is_set(self):
return self.is_set
# 事件监听器类
class EventListener:
def __init__(self, event):
self.event = event
def run(self):
while not self.event.is_set():
time.sleep(0.1) # 每0.1秒检查一次事件是否已设置
print("事件已触发")
# 主程序
def main():
event = Event()
listener = EventListener(event)
# 启动监听器线程
listener_thread = threading.Thread(target=listener.run)
listener_thread.start()
# 模拟执行耗时任务
time.sleep(5)
# 设置事件,使监听器停止sleep
event.set()
# 等待监听器线程结束
listener_thread.join()
if __name__ == "__main__":
main()
在这个示例中,我们创建了一个自定义事件类Event
和一个事件监听器类EventListener
。事件监听器会不断检查事件是否已设置,如果未设置,则继续等待。当事件被设置时,监听器将停止等待并输出提示信息。