python乐观锁和悲观锁

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

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

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

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

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

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

相关推荐
HappyAcmen3 小时前
2.lcut返回列表用法
python
肖恩想要年薪百万3 小时前
JSP中常用JSTL标签
java·开发语言·状态模式
Json____3 小时前
Python练习题集-文件处理、数据管理与网络编程实战小项目15个
python·编程·编程学习·练习题·python学习
星空椰3 小时前
Python 使用飞书 API 获取部门直属用户列表(递归获取所有部门 + 导出 Excel)
python·飞书
l1t3 小时前
在aarch64机器上安装clang来生成codonjit python模块
开发语言·python
辰尘_星启3 小时前
【Linux】Python Socket编程指南
linux·python·socket·系统·通信
南宫萧幕3 小时前
基于 Simulink 与 Python 联合仿真的 eVTOL 强化学习全链路实战
开发语言·人工智能·python·算法·机器学习·控制
Amctwd4 小时前
【Python】从Excel中按行提取图片
java·python·excel
张二娃同学4 小时前
第08篇_RNN_LSTM_GRU序列模型
人工智能·python·rnn·深度学习·神经网络·gru·lstm
财经资讯数据_灵砚智能4 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月13日
大数据·人工智能·python·信息可视化·语言模型·自然语言处理