继续探索,当类中存在共享资源时的场景
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.14sProcess finished with exit code 0
可以发现,不同的进程,虽然都有num属性,但是完全不会发生冲突。
待续。。。