python乐观锁和悲观锁

news/2025/2/9 7:12:09/

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

乐观锁:不会一开始就加锁,在更新的时候,判断一下在此期间别人是否修改了数据,若修改了不执行此操作,反之执行;优点:出现并发冲突小时,乐观锁更好,悲观锁会锁住代码块或者数据,其他线程无法访问,影响并发,而且锁的创建和释放都会消耗资源;这种锁机制适合于多读少写的场景,如缓存中的数据更新。
实例:之前在做家具网时,有人买家具,可能同时买,先判断原始存量,然后在更新的时候再查询一次,如果相同就更新数据量,不同就进入循环重新判断。

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

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

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


http://www.ppmy.cn/news/1263964.html

相关文章

在线教育小程序正在成为教育行业的新生力量

教育数字化转型是目前教育领域的一个热门话题,那么到底什么是教育数字化转型?如何做好教育数字化转型? 教育数字化转型是利用信息技术和数字工具改变和优化教育的过程。主要特征包括技术整合、在线学习、个性化学习、大数据分析、云计算、虚拟…

哈希表的几种实现方式与比较

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 哈希表概述 哈希表(Hash Table)是一种常用的数据结构,用于实现键值对的映射关系。它通过哈希函数将键映射到一个特定的索引位置&#xf…

普冉(PUYA)单片机开发笔记(8): ADC-DMA多路采样

概述 上一个实验完成了基于轮询的多路 ADC 采样,现在尝试跑一下使用 DMA 的 ADC 多路采样。厂家例程中有使用 DMA 完成单路采样的,根据这个例程提供的模板,再加上在 STM32 开发同样功能的基础,摸索着尝试。 经过多次修改和测试&…

二维码智慧门牌管理系统升级:社区关怀

文章目录 前言一、系统的工作原理二、系统功能与关怀服务三、社区关怀的意义 前言 随着科技的发展,生活日益智能化,门牌系统也随之发展。近日,一种新型的二维码智慧门牌管理系统正在崛起,以创新的方式将社区关怀融入到每一个家庭…

【词云图】从excel和从txt文件,绘制以句子、词为单位的词云图

从excel和从txt文件,绘制以句子、词为单位的词云图 写在最前面数据说明&结论 从txt文件,绘制以句子、词为单位的词云图自我介绍 从excel,绘制以句子、词为单位的词云图读取excel绘制以句子、词为单位的词云图文章标题 写在最前面 经常绘…

P5 Linux 标准C库函数

目录 前言 01 标准输入、标准输出和标准错误 02 打开文件 fopen() 03 新建文件的权限 04 fclose()关闭文件 05 读文件和写文件 06 库函数 fseek 定位 6.1 lseek的使用 07 ftell()函数 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_Chen…

git标签的管理与思考

git 标签管理 git 如何打标签呢? 标签是什么? 标签 相当于一个 版本管理的一个贴纸,随时 可以通过标签 切换到 这个版本的状态 , 有人可能有疑问 git commit 就可以知道 代码的改动了, 为啥还需要标签来管理呢? …

OpenHarmony北向-让更广泛的应用开发者更容易参与

一、标准系统的体验 按照官方文档指导,这样操作,OH标准系统开发板就可以运行开发者开发的OpenHarmony应用了。 二、实际情况 按照开发文档上的说明,肯定是装不上的。因为OH不同的发行版,不同发行板不同的设备,IDE&…