Python의 threading
모듈은 두 가지 중요한 동기화 도구인 Lock
및 RLock
를 제공합니다. 둘 다 멀티스레드 애플리케이션에서 공유 리소스에 대한 액세스를 제어하도록 설계되었습니다. 그러나 기능은 크게 다릅니다.
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
재귀 함수 또는 중첩 잠금을 처리할 때 위 내용은 Python의 r-lock 대 잠금의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!