本記事ではPythonのthreadingメソッドであるLockをメモ程度にまとめています。Pythonは非常に人気なプログラミング言語です。そんなPythonでのLockの使い方が参考になれば幸いです。
本記事の目標
threadingモジュールのLockメソッドを利用してスレッドの制御を行います。
このメソッドを利用すれば、
「lock.acquire()」〜「lock.release()」までの間の処理が他のスレッドに邪魔をされなくなります。
このacquireとreleaseメソッドはクラスを跨ぐことも可能です。
一般的にはwithステートメントで記述することが多いらしいです。
実行環境は「python 3.8.8」です。
Pythonコード
あまり恩恵を受けられるコードではありませんが、Lockの使い方は下のような感じ。
process1とprocess2でスレッドの処理を再現しています。
process1では「lock.acquire()」〜「lock.release()」を利用したLockの例、process2ではwithステートメントを利用したLockの例です。どちらも同様の処理です。
import threading
import time
def process1(lock):
print('ーー処理1が開始')
lock.acquire() # スレッドのロックが開始。他のスレッドはreleaseされるまで処理はできない。
time.sleep(3) # 処理を再現
lock.release() # スレッドのロックが終了。他のスレッドも処理が可能。
print('ーー処理1が終了')
def process2(lock):
print('ーー処理2が開始')
with lock: # スレッドのロックが開始。他のスレッドはwithステートメントを抜けるまで処理できない。
time.sleep(3) # 処理を再現
print('ーー処理2が終了')
if __name__ == '__main__':
lock = threading.Lock()
# スレッドを行うインスタンスの作成
p1 = threading.Thread(target=process1, args=(lock,))
p2 = threading.Thread(target=process2, args=(lock,))
p1.start()
p2.start()
実行結果は明らかなので省いておきます。
詳しいLockの使い方は公式リファレンスからどうぞ。
ということで本記事はPythonでのthreadingを用いたLockの実装方法を紹介しました。
最後まで読んでいただきありがとうございました\(^o^)/
超オススメのPC用品
PCを操作する上で、トラックボールマウスが非常におすすめです!
僕も感動したこのマウスを、騙されたと思って使ってみてください!(^^)
リンク
外部モニターで2倍以上の効率化が見込めます!
安いものだと、たったの1万円前後なのでおすすめですよー!\(^o^)/
リンク