python共享内存的读写同步与加锁 —— multiprocessing.Value和multiprocessing.Array、加锁
multiprocessing.Value多进程读写操作:
点击查看代码
import time
from multiprocessing import Process, Value
def func(val):
for i in range(100):
time.sleep(0.01)
val.value += 1
if __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)
运行结果:

可以看到,如果该共享内存的数据读写正常的话该值为10000,实际运行后的结果出现不同的表现,并且并不等于10000。
加锁后的共享内存操作:
val.get_lock()
点击查看代码
import time
from multiprocessing import Process, Value
def func(val):
for i in range(100):
time.sleep(0.01)
with val.get_lock():
val.value += 1
if __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)
运行结果:

本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址,还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注处,如有侵权请与博主联系。
如果未特殊标注则为原创,遵循 CC 4.0 BY-SA 版权协议。
posted on 2025-11-16 17:35 Angry_Panda 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号