この記事では、Python スレッドでの Timer オブジェクト、Lock オブジェクト、および Rlock オブジェクトについて簡単に紹介します。一定の参考値があります。必要な友人は参照してください。お役に立てば幸いです。
Timer オブジェクトは、後で関数を実行するために使用されます。
t=Timer(interval,func,args,kwargs)
タイマー オブジェクトを作成し、間隔秒後に関数 func を実行します。args と kwargs は、func に渡されるパラメーターとキーワード引数を提供します。
タイマーは、start() メソッドを呼び出した後にのみ開始できます。
t.start(): タイマーを開始します。
t.cancal(): 関数が実行されていない場合は、タイマーをキャンセルします。
元のロック (ミューテックス ロック) は同期プリミティブであり、「ロック」と「ロック解除」の 2 つの状態があります。
状態がすでにロックされている場合、ロックを取得しようとしても、ロックが解放されるまでブロックされます。ロックの取得を待機しているスレッドが複数ある場合、ロックが解放されると 1 つのスレッドだけがロックを取得し、取得順序は不定になります。
lock=Lock()
新しい Lock オブジェクトを作成します。初期状態はロックが解除されています。
lock.acquire(blocking): ロックを取得します。必要に応じて、ロックが解放されるまでブロックします。
ブロッキングが false の場合、ロックが取得できない場合は直ちに False が返され、ロックの取得に成功した場合は True が返されます。
lock.release(): ロックを解放します。ロックがロック解除状態にある場合、または最初にacquire()メソッドを呼び出したスレッドとは別のスレッドからこのメソッドが呼び出された場合、エラーが発生します。報告。
リエントラント ロックは、Lock オブジェクトと同様の同期プリミティブですが、同じスレッドがそれを複数回取得できます。
これにより、ロックを所有するスレッドがネストされたacquire()およびrelease()操作を実行できるようになります。この場合、最も外側の Release() 操作のみがロックをわずかにロック解除された状態にリセットできます。
rlock=RLock()
新しい再入可能なロック オブジェクトを作成します。
rlock.acquire(blocking): ロックを取得します。必要に応じて、ロックが解放されるまでブロックします。
ロックを所有するスレッドがない場合、ロックされ、再帰レベルは 1 に設定されます。
このスレッドがすでにロックを所有している場合、ロックの再帰レベルは 1 増加し、関数はすぐに戻ります。
rlock.release(): 再帰レベルを下げることでロックを解放します。デクリメント後の再帰レベルが 0 の場合、ロックはロック解除状態にリセットされます。そうしないと、ロックはロックされたままになります。
このメソッドは、現在ロックを所有しているスレッドによってのみ呼び出すことができます。
関連する推奨事項:
Python オブジェクト指向プログラミングにおけるクラスとオブジェクトの学習チュートリアル
Python マルチスレッド ロック、RLock、セマフォ、およびイベントのインスタンスを同期する
以上がPython スレッドでの Timer オブジェクト、Lock オブジェクト、Rlock オブジェクトの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。