# 通過乙個訊號 來控制 多個程序 同時 執行或者阻塞
# 事件
# from multiprocessing import event
# 乙個訊號可以使所有的程序都進入阻塞狀態
# 也可以控制所有的程序解除阻塞
# 乙個事件被建立之後,預設是阻塞狀態
# e = event() # 建立了乙個事件
# print(e.is_set()) # 檢視乙個事件的狀態,預設被設定成阻塞
# e.set() # 將這個事件的狀態改為true
# print(e.is_set())
# e.wait() # 是依據e.is_set()的值來決定是否阻塞的
# print(123456)
# e.clear() # 將這個事件的狀態改為false
# print(e.is_set())
# e.wait() # 等待 事件的訊號被變成true
# print('*'*10)
# set 和 clear
# 分別用來修改乙個事件的狀態 true或者false
# is_set 用來檢視乙個事件的狀態
# wait 是依據事件的狀態來決定自己是否在wait處阻塞
# false阻塞 true不阻塞
# 紅綠燈事件
import time
import random
from multiprocessing import event,process
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)
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)
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())
Python併發程式設計 事件,紅綠燈控制
is set 用來檢視乙個事件的狀態 wait 是依據事件的狀態來決定自己是否在wait處阻塞 from multiprocessing import event 乙個訊號可以使得所有的程序都進入阻塞狀態 也可以控制所有的程序解除阻塞 乙個事件被建立之後,預設是阻塞狀態 e event 建立了乙個事...
五 併發程式設計 執行緒事件
事件物件管理乙個內部標誌,通過set 方法將其設定為true,並使用clear 方法將其設定為false。wait 方法阻塞,直到標誌為true。該標誌初始為false。方法 is set 當且僅當內部標誌為true時返回true。set 將內部標誌設定為true。所有等待它成為true的執行緒都被...
Python 併發程式設計
1.程序 執行緒 協程基本概念,建立 使用 2.協程的應用 生成器 第三方模組 3.併發的實踐 程式執行起來之後建立的乙個程序。建立程序已經學過使用multiprocessing.process類建立 1 multiprocessing.process 指定target引數,建立物件 2 繼承mul...