Python之多进程(multiprocessing)学习【5】:共享内存,锁
一. 共享内存
在多进程中,如果我们想要定义一个全局变量,让他在各个进程之间进行交流是不行的,所以我们就引入了一个新的概念,全局变量,通过v = mp.Value() 定义了一个全局变量。括号里有参数,后面代码会体现出来。这样它才能够供你提供的cpu内核去使用,并且使用的是同样的内存。
二. 锁
如果你不想你的共享内存被各个进程影响,或者说你不想各个进程之间互相干扰,那么就需要锁这个东西。
三. 代码
import multiprocessing as mp
import time
def job(v,num,l):
l.acquire()
for _ in range(10):
time.sleep(0.2)
v.value+=num
print(v.value)
l.release()
def multicore():
l = mp.Lock()
v = mp.Value('i',0) # 定义一个共享内存,值为int型的0
p1 = mp.Process(target=job,args=(v,1,l))
p2 = mp.Process(target=job,args=(v,3,l))
p1.start()
p2.start()
p1.join()
p2.join()
if __name__ == '__main__':
multicore()