Работая над проектом, который требует, чтобы я мог выбирать объект контейнера в любой точке, поскольку мы ожидаем, что он будет часто выходить из строя при внешних условиях, и сможем полностью выбрать то место, где мы остановились.
Я довольно широко использую библиотеку журналов python, и все мои классы начинаются с настройки регистратора, например:
class foo:
def __init__(self):
self.logger = logging.getLogger("package.foo")
Поскольку я выбираю контейнерный класс, в нем есть несколько слоев классов, каждый со своим экземпляром регистратора.
Теперь по какой-то причине эти регистраторы ломают Пикл. Я получаю следующую ошибку, которая исчезнет, если я удалю self.logger из всех классов:
Can't pickle 'lock' object: <thread.lock object at ... >
Таким образом, мой вопрос заключается в том, существует ли какой-либо способ удалить объекты блокировки со всех регистраторов без необходимости проходить через все мое дерево объектов, удаляя регистраторы, которые мне придется воссоздавать при разблокировке.