在Python中,優雅地終止多線程可以通過以下幾個步驟實現:
threading.Event
來控制線程的退出。threading.Event
對象可以在線程之間共享,用于通知線程何時應該停止運行。import threading
# 創建一個Event對象
stop_event = threading.Event()
Event
對象的狀態。當Event
對象被設置為True時,線程應該停止運行。def worker():
while not stop_event.is_set():
# 在這里執行你的任務
pass
Event
對象的狀態為True。# 請求停止所有線程
stop_event.set()
for thread in threads:
thread.join()
下面是一個完整的示例:
import threading
import time
def worker(stop_event):
while not stop_event.is_set():
print("工作中...")
time.sleep(1)
print("線程已停止。")
def main():
# 創建一個Event對象
stop_event = threading.Event()
# 創建并啟動線程
threads = [threading.Thread(target=worker, args=(stop_event,)) for _ in range(5)]
for thread in threads:
thread.start()
# 讓主線程休眠一段時間,讓其他線程開始工作
time.sleep(5)
# 請求停止所有線程
stop_event.set()
# 等待所有線程結束
for thread in threads:
thread.join()
if __name__ == "__main__":
main()
這個示例中,我們創建了5個工作線程,它們會不斷地打印"工作中…",直到主線程設置了stop_event
的狀態為True。然后,主線程等待所有工作線程結束。