>  기사  >  백엔드 개발  >  Python 스레드의 Timer 객체, Lock 객체 및 Rlock 객체에 대한 간략한 소개

Python 스레드의 Timer 객체, Lock 객체 및 Rlock 객체에 대한 간략한 소개

不言
不言원래의
2018-09-11 16:38:341778검색

이 기사는 Python 스레드 아래의 Timer 객체, Lock 객체 및 Rlock 객체에 대한 간략한 소개를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Timer 객체, Lock 객체, Rlock 객체

Timer 객체

Timer 객체는 나중에 함수를 실행하는 데 사용됩니다.

구문: ​​
t=Timer(interval,func,args,kwargs)

간격 초 후에 func 함수를 실행하는 타이머 개체를 만듭니다. args 및 kwargs는 func에 전달된 매개변수와 키워드 인수를 제공합니다.
타이머는 start() 메서드를 호출한 후에만 시작할 수 있습니다.

일반적으로 사용되는 방법:

t.start(): 타이머를 시작합니다.
t.cancal(): 함수가 실행되지 않은 경우 타이머를 취소합니다.

객체 잠금

원래 잠금(뮤텍스 잠금)은 동기화 프리미티브이며 "잠김"과 "잠금 해제"의 두 가지 상태가 있습니다.

상태가 이미 잠겨 있는 경우 잠금이 해제될 때까지 잠금을 획득하려는 시도가 차단됩니다. 잠금을 획득하기 위해 대기 중인 스레드가 여러 개 있는 경우 잠금이 해제되면 하나의 스레드만 잠금을 획득하며 획득 순서는 불확실합니다.

구문: ​​
lock=Lock()

새 Lock 객체를 생성하면 초기 상태가 잠금 해제됩니다.

일반적인 방법:

lock.acquire(blocking): 필요한 경우 잠금이 해제될 때까지 차단합니다.
차단이 false인 경우 잠금을 획득할 수 없으면 즉시 False가 반환되고, 잠금 획득에 성공하면 True가 반환됩니다.

lock.release(): 잠금을 해제합니다. 잠금이 잠금 해제된 상태이거나 원래 acquire() 메서드를 호출한 스레드가 아닌 다른 스레드에서 이 메서드를 호출하면 오류가 보고됩니다.

Rlock 객체

재진입 잠금은 Lock 객체와 유사한 동기화 기본 요소이지만 동일한 스레드가 이를 여러 번 획득할 수 있습니다.

잠금을 소유한 스레드가 중첩된 acquire() 및 release() 작업을 수행할 수 있습니다. 이 경우 가장 바깥쪽의 Release() 작업만 잠금을 약간 잠금 해제된 상태로 재설정할 수 있습니다.

구문: ​​
rlock=RLock()

새로운 재진입 잠금 개체를 만듭니다.

일반적인 방법:

rlock.acquire(blocking): 필요한 경우 잠금이 해제될 때까지 차단합니다.
잠금을 소유한 스레드가 없으면 잠기며 재귀 수준은 1로 설정됩니다.
이 스레드가 이미 잠금을 소유하고 있으면 잠금의 재귀 수준이 1만큼 증가하고 함수가 즉시 반환됩니다.

rlock.release(): 재귀 수준을 줄여 잠금을 해제합니다. 감소 후 재귀 수준이 0이면 잠금이 잠금 해제 상태로 재설정됩니다. 그렇지 않으면 자물쇠가 잠긴 상태로 유지됩니다.
이 메서드는 현재 잠금을 소유한 스레드에서만 호출할 수 있습니다.

관련 권장 사항:

Python 객체 지향 프로그래밍의 클래스 및 객체 학습 튜토리얼

Python 다중 스레드 동기화 잠금, RLock, 세마포, 이벤트 인스턴스

위 내용은 Python 스레드의 Timer 객체, Lock 객체 및 Rlock 객체에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.