iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python版本的读写锁操作方法
  • 546
分享到

python版本的读写锁操作方法

操作方法版本python 2022-06-04 19:06:37 546人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本文实例讲述了python版本的读写锁操作方法。分享给大家供大家参考,具体如下: 最近要用到读写锁的机制,但是Python2.7的自带库里居然木有. 网上讲读写锁的例子众多,但是原理简单,代码明晰的却不多见

本文实例讲述了python版本的读写操作方法。分享给大家供大家参考,具体如下:

最近要用到读写锁的机制,但是Python2.7的自带库里居然木有.
网上讲读写锁的例子众多,但是原理简单,代码明晰的却不多见, 索性自己写个.

读写锁一般用于多个读者,1个或多个写者同时访问某种资源的时候。多个读者之间是可以共享资源的,但是写者与读者之间,写者与写者之间是资源互斥的。

这也就是说同时可以有多个读者或一个写者处于工作状态。

细分下来,读写锁可以分为三类,读者优先,写者优先和公开策略。

第一种,读者优先,
目的是保证读者可以尽可能的不需要等待就获取资源。
实现的要点,写者方面比较简单,只需要一个锁就能控制是否可写。
读者方面,在第一个读者到来的时候就要阻止写者,最后一个读者离开之后再开放写者。这里就存在一个读者计数器的问题,这个计数器是需要在各读者之间共享的,所以需要一个额外的锁来确保该计数器的加减操作的原子性。

实现代码:

定义一个类RWLock,并作简单的初始化


import threading
class RWLock(object):
  def __init__(self):
    self.rlock = threading.Lock()
    self.wlock = threading.Lock()
    self.reader = 0

写者锁


def write_acquire(self):
  self.wlock.acquire()
def write_release(self):
  self.wlock.release()

读者锁


def read_acquire(self):
  self.rlock.acquire()
  self.reader += 1
  if self.reader == 1:
    self.wlock.aquire()
  self.rlock.release()
def read_release(self):
  self.rlock.acquire()
  self.reader -= 1
  if self.reader == 0:
    self.wlock.release()
  self.rlock.release()

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

--结束END--

本文标题: python版本的读写锁操作方法

本文链接: https://www.lsjlt.com/news/14981.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go读写锁操作的方法
    这篇“Go读写锁操作的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go读写锁操作的方法”文章吧。读写锁有很多方法方法一...
    99+
    2023-07-02
  • python snap7读写PLC的操作方法
    目录主要在DB块里操作读DB块写DB块主要在DB块里操作 读DB块 import snap7 import struct def plc_connection(): PL...
    99+
    2023-02-22
    python snap7读写PLC python snap7 python 读写PLC
  • Go读写锁操作方法示例详解
    目录引言读写锁有很多方法读操作写操作引言 前面讲到,在资源竞争的时候可以使用互斥锁,保证了资源访问的唯一性,但也降低了性能,仔细分析一下场景,如果只是读取数据,无论多少个gorout...
    99+
    2024-04-02
  • Python读写csv文件的操作方法
    这篇文章主要介绍了Python读写csv文件的操作方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。要在 Python 中写入 CSV,请使用 Python 的 csv 模块。例如,让我们将一个字符串列表写入一个新的 C...
    99+
    2023-07-06
  • Python中CSV文件的读写库操作方法
    目录文件的基本读写用字典模式处理数据非标准格式的处理dialectSnifferCSV 格式的全称是 Comma Separated Values,意思是逗号分割的数据,是最常见的电...
    99+
    2022-12-08
    CSV文件读写库 CSV文件读写 CSV文件
  • C#操作内存读写方法
    本篇内容主要讲解“C#操作内存读写方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#操作内存读写方法”吧!C#操作内存读写方法是什么呢?让我们来看看具体的实例实现:using Sy...
    99+
    2023-06-17
  • python之文件操作(txt文本的读取写入及处理方法)
    目录 1. 读取txt文档 1.1 打开.txt文件逐行读取文件内容 2.1 分割句子保存列表 2.2 filter使用:使用filter可将列表中的元素进行函数处理(append和expend区别) 3.1 获取列表中每个元素的长度: 拓...
    99+
    2023-09-16
    python 开发语言
  • Python 文件的读写操作
    文章目录 一、Python 文件读写概述二、使用 open() 打开文件三、使用 read()、readline()、readlines() 读取数据四、使用 write()、writelin...
    99+
    2023-09-29
    职场和发展 java python 后端 算法
  • 【Python】Python读写文件操作
    原帖地址:http://blog.csdn.net/adupt/article/details/44356151.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭...
    99+
    2023-01-31
    操作 文件 Python
  • Pandas对CSV文件读写操作的方法
    这篇“Pandas对CSV文件读写操作的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pandas对CSV文件读写操作的...
    99+
    2023-06-30
  • 详解Python读取和写入操作CSV文件的方法
    目录什么是 CSV 文件?内置 CSV 库解析 CSV 文件读取 CSV 文件csv将 CSV 文件读入字典csv可选的 Python CSV reader参数使用 csv 写入文件...
    99+
    2024-04-02
  • Python 之文件读写操作
    Python 读写文件    1、打开文件        使用 open 打开文件后,格式:open(filename,mode),最后一定要调用文件对象的 close() 方法,如图所示:                使用到的模式(mo...
    99+
    2023-01-31
    操作 文件 Python
  • SpringBoot2整合Redis实现读写操作的方法
    本篇内容主要讲解“SpringBoot2整合Redis实现读写操作的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot2整合Redis实现读写操作的方法”吧!目录 启动 Re...
    99+
    2023-06-20
  • Nodejs读写文件的操作方法有哪些
    这篇“Nodejs读写文件的操作方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Nodejs读写文件的操作方法有哪些...
    99+
    2023-07-04
  • GO文件创建及读写操作的方法
    本文小编为大家详细介绍“GO文件创建及读写操作的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“GO文件创建及读写操作的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。三种文件操作比较ioutilbufio...
    99+
    2023-06-30
  • Golang并发操作中常见的读写锁详析
    互斥锁简单粗暴,谁拿到谁操作。今天给大家介绍一下读写锁,读写锁比互斥锁略微复杂一些,不过我相信我们今天能够把他拿下! golang读写锁,其特征在于 读锁:可以同时进行多个...
    99+
    2024-04-02
  • Python实现Word的读写改操作
    目录用 docx 模块读取 WordWord 调整样式Word 写入操作用 docx 模块读取 Word docx 安装 cmd 中输入pip install python-docx...
    99+
    2024-04-02
  • SpringBoot读写操作yml配置文件方法
    目录yml配置规则普通的kv读取读取到集合和数组读取为对象和Mapyml配置规则 属性跟属性值之间使用“:”和一个“空格”隔开,层级结...
    99+
    2023-01-28
    SpringBoot读写操作yml SpringBoot yml配置文件
  • python文件读写操作小结
    目录读文件写文件关于open()的mode参数:file_obj.seek(offset,whence=0)字符编码读文件 打开一个文件用open()方法(open()返回一个文件对...
    99+
    2024-04-02
  • 【Python】Python读写.xlsx文件(基本操作、空值补全等)
    【Python】Python读写.xlsx文件(Pandas) 文章目录 【Python】Python读写.xlsx文件(Pandas)1. 介绍2. Pandas读写xlsx文件2.1 基本...
    99+
    2023-10-18
    python pandas 数据分析
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作