python补充之Multiprocessing(六)lock锁

本文探讨了在多进程环境中,如何使用lock锁解决共享内存数据竞争问题。通过对比有无lock的情况,展示了lock如何确保进程按顺序访问共享变量,从而实现数据处理的有序性和一致性。
摘要由CSDN通过智能技术生成

python补充之Multiprocessing(六)lock锁

上一章写了关于共享内存的问题,但是出现一个问题,如果多个进程对同一个共享变量做处理,会发生什么?应该会你抢过来处理一点,我抢过来处理一点,可以想象处理的结果很难控制和预测。所以需要lock锁,来保证一个进程完成之后,他所用的共享变量才可以被其他进程使用。

下面写了两个代码,来做一个比较。

以下是没有lock的代码:

import multiprocessing as mp
import time

def job(v, num):

    for _ in range(10):
        time.sleep(0.1)
        v.value += num
        print(v.value)

def multicore():

    v = mp.Value('i', 0)
    p1 = mp.Process(target=job, args=(v, 1))
    p2 = mp.Process(target=job, args=(v, 3))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

if __name__ == '__main__':
    multicore()

在终端中:

pi@raspberrypi:~/Desktop/My_Project/Python_Learning $ python3 5_MultiprocessingLearning.py

结果:

1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值