python学习笔记(56) 进程的同步控制

信号量:  # 相当于多个钥匙的Lock

form mutiprocessing import Semaphore

sem = Semaphore(5)

sem.acquire()

sem.release()

########################################

事件:

form mutiprocessing import Event

e = Event()

e.is_set()  # 事件状态,默认False

e.set()  # 状态改为Ture

e.wait()  # 根据set值来决定是否在wait处阻塞

e.clear()  # 状态改为False

#######################################

红绿灯

import time
import random
from multiprocessing import Process,Event

def cars(i,e):
if not e.is_set():
print('%s在等待...'%i)
e.wait()
print('%s已通过...'%i)


def traffic_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=traffic_light,args=(e,))
traffic.start()
for i in range(20):
car = Process(target=cars,args=(i,e))
car.start()
time.sleep(random.random())

猜你喜欢

转载自www.cnblogs.com/farion/p/10010032.html