需求:主线程创建工作子线程和键盘输入监听子线程。
当用户输入 '0' 后, 工作子线程会收到停止信号并退出,此时键盘输入监听线程仍然运行;
当用户输入 '1' 后,会建立新的工作子线程;
当用户输入 '2' 后,整个程序退出。
import threading
import time
from loguru import logger
exit = False
class WorkerThread(threading.Thread):
def __init__(self):
super().__init__()
self.stop_event = threading.Event()
def run(self):
thread_id = threading.get_ident()
print(f"Worker thread {thread_id} has started.")
while not self.stop_event.is_set():
print(f"Worker thread {thread_id} is running.")
time.sleep(1)
print(f"Worker thread {thread_id} has stopped.")
def stop(self):
self.stop_event.set()
self.join() # 等待子线程结束
def end_child_thread():
try:
if worker_thread.is_alive():
worker_thread.s