python之信号量方式实现多进程

进程(process)是系统资源分配和调度的最小单位,一个程序至少有一个进程,而一个进程至少有一个线程。多进程开发目的在于充分利用多核系统。
实现多进程的方式有很多,这篇文章分享一下利用信号量(Semaphore)实现多进程。

from multiprocessing import Process,Semaphore
import time

def process_a(sema_a,sema_b):
    while True:
        sema_a.acquire()
        print('A')
        time.sleep(1)
        sema_b.release()

def process_b(sema_b,sema_c):
    while True:
        sema_b.acquire()
        print('B')
        time.sleep(1)
        sema_c.release()

def process_c(sema_c,sema_a):
    while True:
        sema_c.acquire()
        print('C')
        time.sleep(1)
        sema_a.release()

if __name__ == "__main__":

    sema_a = Semaphore(1)
    sema_b = Semaphore(0)
    sema_c = Semaphore(0)

    t1 = Process(target=process_a,args=(sema_a,sema_b))
    t2 = Process(target=process_b,args=(sema_b,sema_c))
    t3 = Process(target=process_c,args=(sema_c,sema_a))

    t1.start()
    t2.start()
    t3.start()

    t1.join()
    t2.join()
    t3.join()

执行结果:依次输出 A B C
python之信号量方式实现多进程_第1张图片

你可能感兴趣的:(python,python,多进程)