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
- それはを経由して、カウントを取得することにより、
_thread.RLock
と同じことを行うことは可能です:これは、簡単に例により実証されますか? - 可能であれば、コードは上記のバージョンよりも利点がありますか?
- 有利な場合は、カウントにアクセスするためにどのコードを書き込む必要がありますか?
なぜあなたはctypesまたはサブクラスをまったく必要としますか? 'threading._RLock'の実装の詳細にアクセスする場合は、オブジェクトの' _count'属性に 'whatever_rlock._count'として直接アクセスしてみませんか? – user2357112
アンダースコアが実際に何かをしているという印象を受けていますか?それは単なるアンダースコアです。 Pythonには 'private'や' protected'アクセスはありません。 Javaのようなアクセス制御をバイパスするために、いくつかの 'klass.getDeclaredField( '_ count').getInt(lock)'リフレクションAPIを使う必要はありません。しかし、他のライブラリの実装の詳細を突き止めることは、まだ悪い考えです。 – user2357112
@ user2357112 '_thread.RLock'はC言語で実装されており、' count'属性を公開していません。おそらく 'ctypes'を介してアクセスする必要があります。サブクラスは、データを取得するための整然としたAPIを提供できます。 'threading._RLock._count'はPythonでアクセス可能です。Pythonで実装されているためですが、Cでの実装ではこのようなオプションを簡単に許可しません。 –