pyrhon怎么暫停兩個(gè)線程

小億
106
2023-09-04 11:46:33

在 Python 中,可以使用 threading 模塊來(lái)創(chuàng)建和管理線程。要暫停線程,可以使用 threading.Event() 對(duì)象來(lái)實(shí)現(xiàn)。

下面是一個(gè)示例代碼,演示了如何暫停和恢復(fù)兩個(gè)線程:

import threading
import time
# 創(chuàng)建一個(gè) Event 對(duì)象,用于暫停和恢復(fù)線程
pause_event = threading.Event()
# 線程函數(shù)1
def thread1_func():
while True:
print("Thread 1 is running")
time.sleep(1)
# 檢查 Event 對(duì)象狀態(tài),如果處于暫停狀態(tài),則線程進(jìn)入等待狀態(tài)
pause_event.wait()
# 線程函數(shù)2
def thread2_func():
while True:
print("Thread 2 is running")
time.sleep(1)
# 檢查 Event 對(duì)象狀態(tài),如果處于暫停狀態(tài),則線程進(jìn)入等待狀態(tài)
pause_event.wait()
# 創(chuàng)建并啟動(dòng)兩個(gè)線程
thread1 = threading.Thread(target=thread1_func)
thread2 = threading.Thread(target=thread2_func)
thread1.start()
thread2.start()
# 暫停線程
pause_event.clear()
time.sleep(3)
# 恢復(fù)線程
pause_event.set()
# 等待線程執(zhí)行完畢
thread1.join()
thread2.join()

在上面的代碼中,創(chuàng)建了一個(gè) Event 對(duì)象 pause_event,并在每個(gè)線程函數(shù)中使用 wait() 方法來(lái)檢查該對(duì)象的狀態(tài)。當(dāng) pause_event 處于暫停狀態(tài)(即 clear() 被調(diào)用),線程會(huì)進(jìn)入等待狀態(tài);當(dāng) pause_event 處于激活狀態(tài)(即 set() 被調(diào)用),線程會(huì)繼續(xù)執(zhí)行。

通過(guò)調(diào)用 clear() 方法,可以暫停線程;通過(guò)調(diào)用 set() 方法,可以恢復(fù)線程的執(zhí)行。在上面的示例中,線程會(huì)在啟動(dòng)后暫停 3 秒鐘,然后再恢復(fù)執(zhí)行,最后等待線程執(zhí)行完畢。

0