pythonバージョンの読み書きロック操作方法


本論文の例は、pythonバージョンの読み書きロック操作方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
最近は読み書きロックの仕組みが使われていますが、python 2.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プログラムの設計に役に立ちます。