is_set 用來檢視乙個事件的狀態
wait 是依據事件的狀態來決定自己是否在wait處阻塞
from multiprocessing import event
#乙個訊號可以使得所有的程序都進入阻塞狀態
#也可以控制所有的程序解除阻塞
#乙個事件被建立之後, 預設是阻塞狀態
e = event() #建立了乙個事件
print(e.is_set()) #檢視乙個事件的狀態,預設被設定成阻塞
print(12345)
e.set() #將這個事件的狀態改為true,即不阻塞
e.wait() #依據e.is_set()的值來決定是否阻塞
print(12345)
e.clear() #將這個事件的狀態改為false
print(e.is_set())
e.set()
e.wait() #有條件的等待,等待這個事件的訊號變成true
print('*'* 10)
print(e.is_set())
e.clear() #將這個事件的狀態改為false,但是並沒有wait()將其阻塞,故下面的**還是可以列印
print('*'* 10)
from multiprocessing import event, process
import time
import random
def light(e):
while true:
if e.is_set():
e.clear()
print('\033[31m紅燈亮了\033[0m')
else:
e.set()
print('\033[32m綠燈亮了\033[0m')
time.sleep(2)
def cars(e,i):
if not e.is_set(): #表示'紅燈亮了:':
print('car%i在等待'%i)
e.wait() #'等紅燈'阻塞直到得到乙個事件狀態變為true的訊號
#'車通行'
print('\033[0;32;40mcar%i通過\033[0m'%i)
if __name__ == '__main__':
e = event()
traffic = process(target=light,args=(e,))
traffic.start()
for i in range(20):
car = process(target=cars, args=(e,i))
car.start()
time.sleep((random.random()))
Events 事件 紅綠燈
event 用於執行緒之間狀態的同步。對全域性變數不斷地做修改。event threading.event 生成1個event的物件 event.wait 等著設定全域性變數。檢測標誌位是否有設定,如果標誌位沒有設定的話,會一直卡在這裡。等待標誌位被設定。如果標誌位被設定了,代表綠燈,直接通行。wa...
Python 實現紅綠燈
一 通過event來實現兩個或多個執行緒間的互動,下面是乙個紅綠燈的例子,即起動乙個執行緒做交通指揮訊號燈,乙個執行緒做車輛,車輛行駛按紅燈停,綠燈行的規則。usr bin python coding utf 8 這是我用來練習python執行緒鎖的測試指令碼 import threading,ti...
紅綠燈難題
contest 多校訓練 985專場 problem f 985的紅綠燈難題 time limit 1 sec memory limit 128 mb submit 206 solved 127 submitstatusweb board description 已知紅 綠 黃燈各持續r g y秒,...