Как правильно расширить Python Queue?

Я пишу пользовательский подкласс Queue.Queue и столкнулся с ситуацией, когда мне нужно получить блокировку на уровне очереди при вызове моего пользовательского put(). Я хотел бы использовать существующую блокировку Queue (Queue.mutex), но не могу, потому что она не RLock.

В исходнике (python 2.6) говорится:

# Override these methods [_put, _get, etc] to implement other queue organizations
# (e.g. stack or priority queue).
# These will only be called with appropriate locks held

Но в онлайн-документации ничего не говорится об их переопределении. Другие реализации Queue в этом модуле переопределяют их. Поэтому я склонен полагать, что метод _put является приватным и не предназначен для использования вне модуля Queue.

Кто-нибудь знает, насколько кошерно будет использовать Queue._put и его друзей в моем собственном подклассе?

5
задан Richard Levasseur 12 December 2011 в 23:58
поделиться