python乐观锁和悲观锁

在并发编程中,锁是一种常用的机制,用于保护共享资源的访问。乐观锁和悲观锁是两种不同的锁机制。

乐观锁 :不会一开始就加锁,在更新的时候,判断一下在此期间别人是否修改了数据,若修改了不执行此操作,反之执行;优点:出现并发冲突小时,乐观锁更好,悲观锁会锁住代码块或者数据,其他线程无法访问,影响并发,而且锁的创建和释放都会消耗资源;这种锁机制适合于多读少写 的场景,如缓存中的数据更新。

实例:之前在做家具网时,有人买家具,可能同时买,先判断原始存量,然后在更新的时候再查询一次,如果相同就更新数据量,不同就进入循环重新判断。

悲观锁 :操作数据时,直接将锁锁住,直到操作结束:优点:出现并发冲突大的时候,悲观锁更好,乐观锁频繁失败,需要不断重试,浪费CPU资源。这种锁机制适合于多写少读的场景,如数据库中的事务处理。

在Python中,可以使用线程锁来实现悲观锁,如使用threading.Lock();也可以使用一些乐观锁的实现,如使用类似redis的分布式锁,或者使用version来实现乐观锁。

在实现并发控制时,应该根据具体的实际情况来选择使用乐观锁还是悲观锁,一般来说,如果并发请求较少且竞争不激烈,可以使用乐观锁;如果并发请求比较多并且竞争激烈,则应该使用悲观锁。

相关推荐
小码过河.4 分钟前
17装饰器模式
开发语言·python·装饰器模式
gf132111112 分钟前
python_生成RPA运行数据报告
windows·python·rpa
嫂子开门我是_我哥12 分钟前
第八节:条件判断与循环:解锁Python的逻辑控制能力
开发语言·python
2301_8059629315 分钟前
树莓派的一些问题记录-1:usbboot仓库
python·gitee
深蓝电商API19 分钟前
Selenium 动作链 ActionChains 高级用法
爬虫·python·selenium
喵手27 分钟前
Python爬虫零基础入门【第八章:项目实战演练·第2节】项目 2:信息聚合站 Demo(列表+详情+增量+质量报告)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·爬虫项目演练·信息聚合站
翱翔的苍鹰29 分钟前
多Agent智能体系统设计思路
java·python·深度学习·神经网络·机器学习·tensorflow
小北方城市网37 分钟前
Spring Cloud Gateway 全链路监控与故障自愈实战
spring boot·python·rabbitmq·java-rabbitmq·数据库架构
weixin_4407305040 分钟前
04python编程笔记-04函数+05面向对象
笔记·python
weixin_4624462342 分钟前
用 Python 自动生成双面打印英语单词闪卡(Flashcards)PDF
python·pdf·记忆卡