python并发

6. python多进程信号量-Semaphore

2018-12-26  本文已影响6人  花间派I风月

一、简述

信号量Semaphore是一个计数器,控制对公共资源或者临界区域的访问量,信号量可以指定同时访问资源或者进入临界区域的进程数。每次有一个进程获得信号量时,计数器-1,若计数器为0时,其他进程就停止访问信号量,一直阻塞直到其他进程释放信号量。


二、常用方法和属性


三、示例

import time, random
from multiprocessing import Process, Semaphore

def ktv(i, sem):
    sem.acquire()
    print('%s 走进ktv' %i)
    time.sleep(random.randint(1, 5))
    print('%s 走出ktv' %i)
    sem.release()

if __name__ == "__main__":
    sem = Semaphore(4)
    for i in range(5):
        p = Process(target=ktv, args=(i, sem))
        p.start()

运行结果

0 走进ktv
3 走进ktv
4 走进ktv
1 走进ktv
1 走出ktv
2 走进ktv
2 走出ktv
0 走出ktv
3 走出ktv
4 走出ktv

Process finished with exit code 0

示例说明:

上一篇 下一篇

猜你喜欢

热点阅读