python多进程锁怎么使用
PythonのmultiprocessingモジュールのLockクラスを使用してマルチプロセスロックを実装できます。
多プロセスにおけるロックの簡単な使用例を次に示します。
import multiprocessing
# 共享变量
counter = multiprocessing.Value('i', 0)
lock = multiprocessing.Lock()
def increment():
for _ in range(100000):
with lock:
counter.value += 1
def main():
processes = []
for _ in range(3):
process = multiprocessing.Process(target=increment)
process.start()
processes.append(process)
for process in processes:
process.join()
print(f"Counter value: {counter.value}")
if __name__ == '__main__':
main()
上記サンプルでは、マルチプロセスで共有できる整数を生成するために、multiprocessing.Valueを使用したcounter共有変数を定義しました。そして、プロセス間で同期を取るために、lockロックを作成しました。
各プロセスで実行するロジックは、increment関数がwith lock文でロックを取得し、counter.valueに対してインクリメント操作を行うものです。
main関数で、3つのプロセスを作成して、processesリストに追加しました。そのあと、process.join()によって、すべてのプロセスが実行されるのを待機しました。
最後に、counter.value の値を出力して、複数プロセスによる共有変数の変更が正しく行われたことを確認します。
ロックの使用は、オーバーヘッドが発生するため、可能な限り最小限に抑える必要があります。ロックは、共有リソースに排他アクセスする必要がある場合にのみ使用してください。