python 多进程同步运行不同函数-共享资源的访问

基于上一篇博文:https://blog.csdn.net/jizhidexiaoming/article/details/121290018https://blog.csdn.net/jizhidexiaoming/article/details/121290018

继续探索,当类中存在共享资源时的场景

import time
import multiprocessing


def eat(p_name, num):
    print(p_name, "{}".format(num))
    time.sleep(1)


def sleep(p_name, num):
    print(p_name, "{}".format(num))
    time.sleep(1)


class Life(multiprocessing.Process):
    def __init__(self, life_type, p_name, num):
        multiprocessing.Process.__init__(self)
        self.life_type = life_type
        self.p_name = p_name
        self.num = num  # 不同的进程,num不同

    def run(self):
        for i in range(1, self.num+1):  # 不同的进程不会发生串联
            self.life_type(self.p_name, i)


if __name__ == '__main__':
    start = time.time()

    p1 = Life(eat, "p1", 5)  # 吃5次
    p2 = Life(sleep, "p2", 9)  # 睡9次

    p1.start()
    p2.start()

    p1.join()
    p2.join()

    end = time.time()
    print(str(round(end - start, 3)) + 's')

 输出:

p1 1
p2 1
p2 2
p1 2
p2 3
p1 3
p1 4
p2 4
p1 5
p2 5
p2 6
p2 7
p2 8
p2 9
9.14s

Process finished with exit code 0
 

可以发现,不同的进程,虽然都有num属性,但是完全不会发生冲突。 


待续。。。

猜你喜欢

转载自blog.csdn.net/jizhidexiaoming/article/details/121293239