標準出力への出力中にこれを行う必要がありますか:
`lock.acquire()`
#printing to standard output
lock.release()
マルチスレッドおよびマルチプロセス向け。
また、グローバルファイルまたはグローバル変数の値から読み取るだけで、これを行う必要がありますか??
PS: Python 2.7 でマルチスレッドとマルチプロセッシングを行っています。
標準出力への出力中にこれを行う必要がありますか:
`lock.acquire()`
#printing to standard output
lock.release()
マルチスレッドおよびマルチプロセス向け。
また、グローバルファイルまたはグローバル変数の値から読み取るだけで、これを行う必要がありますか??
PS: Python 2.7 でマルチスレッドとマルチプロセッシングを行っています。
に単純化できます
with lock:
print(something)
しかし、そうです、プリントがさまざまなスレッドによって混合されるのを避ける必要があります。
読み取り専用変数を使用する場合、ロックは必要ありません。ファイルを読み取るとき(状態を変更しているため)、必要です。
Python の出力は GIL によりスレッド セーフです。複数のスレッドから出力しても、Python の内部状態に問題が生じることはありません。
ただし、複数の print ステートメントですべてのプリントが論理的にグループ化されていることを確認したい場合は、正しい順序でプリントされるようにする方法が必要です。あなたが発見した1つの方法は、ロックを使用することです。別のIMOより簡単な方法は、一緒に印刷する必要があるすべてを含む単一の文字列を作成することです。