python併發程式設計 事件

2021-09-02 22:42:20 字數 1417 閱讀 4534

# 通過乙個訊號 來控制 多個程序 同時 執行或者阻塞

# 事件

# 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...