pythonのスレッドロックの使い方は?
Pythonではスレッドロックは、複数のスレッドによる共有リソースへのアクセスを制御するために使用される同期プリミティブです。スレッドロックの主目的は、任意の特定の瞬間に共有リソースを1つのスレッドだけがアクセスできるようにし、競合状態とデータの不整合を避けることです。
スレッドロックを使用する一般的な手順は次のとおりです。
- スレッド.lock
- 習得する
- ロックを獲得したスレッドは、共有リソースへのアクセスと操作を実行できる。
- 解放します
スレッドロックを使用した簡単な例を以下に示します。
import threading
# 创建一个锁对象
lock = threading.Lock()
# 共享资源
count = 0
def increment():
global count
for _ in range(1000000):
# 获取锁
lock.acquire()
try:
count += 1
finally:
# 释放锁
lock.release()
# 创建多个线程并启动
threads = []
for _ in range(5):
t = threading.Thread(target=increment)
t.start()
threads.append(t)
# 等待所有线程执行完毕
for t in threads:
t.join()
print(count) # 输出:5000000
上記の例では、複数のスレッドがcount変数に同時にインクリメント操作を行いますが、スレッドロックを使用することで、各インクリメント操作を1つのスレッドだけが実行できるようになり、競合状態とデータ不整合の問題が回避されます。