ホームページ >バックエンド開発 >Python チュートリアル >R-Lock vs Lock in Python
Python の threading
モジュールは、Lock
と RLock
という 2 つの重要な同期ツールを提供します。どちらもマルチスレッド アプリケーションの共有リソースへのアクセスを制御するように設計されています。 ただし、それらの機能は大きく異なります。
Lock
(スレッド.ロック)Lock
例:<code class="language-python">import threading lock = threading.Lock() def critical_section(): lock.acquire() try: print(f"{threading.current_thread().name} is accessing the shared resource.") finally: lock.release() thread1 = threading.Thread(target=critical_section) thread2 = threading.Thread(target=critical_section) thread1.start() thread2.start() thread1.join() thread2.join()</code>
RLock
(threading.RLock)RLock
例:<code class="language-python">import threading rlock = threading.RLock() def recursive_task(count): rlock.acquire() try: print(f"{threading.current_thread().name} acquired the lock; count = {count}") if count > 0: recursive_task(count - 1) # Recursive call; re-acquires the lock finally: rlock.release() thread = threading.Thread(target=recursive_task, args=(3,)) thread.start() thread.join()</code>
Lock
と RLock
Feature |
Lock (threading.Lock) |
RLock (threading.RLock) |
---|---|---|
Reentrancy | Non-reentrant | Reentrant |
Use Case | Simple locking | Recursive/nested locking |
Performance | Generally faster | Slightly more overhead |
Lock
RLock
と Lock
再入が不要な単純なロック シナリオには RLock
再帰関数またはネストされたロックを扱う場合は、以上がR-Lock vs Lock in Pythonの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。