threading._RLock._count
에 대해 count
속성을 만들려면 클래스를 상속하고 기본 특성의 데이터를 노출해야합니다.ctypes를 통해 _thread.RLock 수에 편리하게 액세스 할 수 있습니까?
import threading
# noinspection PyProtectedMember
class RLock(threading._RLock):
"""RLock() -> RLock instance with count property"""
@property
def count(self):
"""Count property showing current level of lock ownership."""
return self._count
- 이
ctypes
을 통해 수를 얻어서_thread.RLock
와 동일한 기능을 수행 할 수 있는가 :이 쉽게 예에 의해 입증된다? - 가능한 경우 코드가 위에 표시된 버전보다 장점이 있습니까?
- 이점이 있다면 카운트에 액세스하려면 어떤 코드를 작성해야합니까?
왜 ctypes 또는 하위 클래스가 필요합니까? 'threading._RLock'의 구현 세부 사항에 접근하려면 객체의'_count' 속성에'whatever_rlock._count'로 직접 액세스하지 않는 것이 어떻습니까? – user2357112
실제로 언더 스코어가 뭔가를하고 있다는 인상을 받고 있습니까? 그것은 단지 밑줄입니다. 파이썬에는'private' 또는'protected' 접근이 없습니다. Java와 같은 액세스 제어를 우회하기 위해'klass.getDeclaredField ('_ count'). getInt (lock)'reflection API를 거칠 필요가 없습니다. 단지 액세스 제어가 없기 때문입니다. 그러나 다른 라이브러리의 구현 세부 사항을 찌르는 것은 여전히 나쁜 생각입니다. – user2357112
@ user2357112'_thread.RLock'은 C에서 구현되고'count' 속성을 노출시키지 않으며,'ctypes'를 통해 접근해야 할 수도 있습니다. 서브 클래스는 데이터를 얻기위한 질서 정연한 API를 제공 할 수 있습니다. 'threading._RLock._count'는 파이썬에서 접근 가능합니다. 파이썬에서 구현 되었기 때문에, C에서의 구현은 그러한 옵션을 쉽게 허용하지 않습니다. –