이 기사는 Python 스레드의 세마포어 및 제한된 세마포어에 대한 소개를 제공합니다. 필요한 친구가 참고할 수 있기를 바랍니다.
세마포어는 카운터 기반 동기화 프리미티브입니다. acquire() 메서드가 호출될 때마다 카운터가 1씩 감소하고 release() 메서드가 호출될 때마다 카운터가 1씩 증가합니다. 1. . 카운터가 0이면 다른 스레드가 release() 메서드를 호출할 때까지 acquire() 메서드가 차단됩니다.
s=Semqphore(value)
새 세마포어를 만듭니다. 값은 카운터의 초기 값입니다. 값을 생략하면 기본값은 1
s.acquire(blocking): 세마포어를 가져옵니다. 내부 카운터가 0보다 큰 경우 이 메서드는 해당 값을 1씩 감소시킵니다.
그럼 즉시 돌아오세요. 값이 0이면 이 메서드는 다른 스레드가 release() 메서드를 호출할 때까지 차단됩니다.
차단 매개변수는 Lock 및 RLock 개체에 대해 설명된 대로 작동합니다.
s.release(): 내부 카운터 값에 1을 더하여 세마포어를 해제합니다.
카운터가 0이고 다른 스레드가 기다리고 있으면 스레드가 깨어납니다.
여러 스레드가 대기 중인 경우 acquire() 호출에서 하나만 반환될 수 있으며 순서는 정의되지 않습니다.
bs=BoundedSemaphore(value)
새 바운드 세마포어를 만듭니다. value는 카운터의 초기 값입니다. 생략하면 기본값은 1입니다.
BoundedSemaphore는 Semaphore와 정확히 동일하게 작동하지만 release() 작업 수가 acquire()를 초과할 수 없습니다. 작업 수.
세마포어는 신호를 보내는 데 사용할 수 있습니다. 예를 들어, acquire() 및 release() 메서드를 다른 스레드에서 호출하여 생산자 스레드와 소비자 스레드 간에 통신할 수 있습니다.
관련 권장 사항:
Python3에서 세마포어 사용에 대한 자세한 설명입니다. (자세한 예시)
위 내용은 Python 스레드의 세마포어 및 제한된 세마포어 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!