当前位置: 首页 > news >正文

python共享内存的读写同步与加锁 —— multiprocessing.Value和multiprocessing.Array、加锁

python共享内存的读写同步与加锁 —— multiprocessing.Value和multiprocessing.Array、加锁

multiprocessing.Value多进程读写操作:

点击查看代码
import time
from multiprocessing import Process, Valuedef func(val):for i in range(100):time.sleep(0.01)val.value += 1if __name__ == '__main__':val = Value('i', 0)p_list = [Process(target=func, args=(val,)) for _ in range(100)]for p in p_list:p.start()for p in p_list:p.join()print(val.value)

运行结果:

image


可以看到,如果该共享内存的数据读写正常的话该值为10000,实际运行后的结果出现不同的表现,并且并不等于10000。





加锁后的共享内存操作:

val.get_lock()



点击查看代码
import time
from multiprocessing import Process, Valuedef func(val):for i in range(100):time.sleep(0.01)with val.get_lock():val.value += 1if __name__ == '__main__':val = Value('i', 0)p_list = [Process(target=func, args=(val,)) for _ in range(100)]for p in p_list:p.start()for p in p_list:p.join()print(val.value)





运行结果:

image