Как избежать появления ошибок при разделении объектов между потоками?

У меня есть программа, в которой мне нужно сохранить глобальную переменную в файл. Я делаю это, используяpickle модуль.

у меня есть другойthread(Демон =False, отthreading модуль), который иногда меняет значение глобальной переменной. Значение также изменяется в глобальной области видимости (основная программа).

Я сбрасываю значение переменной в.pkl файл каждые 5 секунд (используя другойthread отthreading модуль).

Но я обнаружил следующую ошибку, когдаdump Метод был выполнен:

TypeError: can't pickle _thread.lock objects

Почему это происходит? И что я могу сделать, чтобы это исправить?

Примечание: я нашел несколько похожих ответовmultiprocessing модуль. Но мне нужен ответ дляthreading модуль.

Код:

def save_state():
    while True:
        global variable

        lastSession = open('lastSession.pkl', 'wb')

        # error occurs on this line
        pickle.dump(variable, lastSession)

        lastSession.close()          
        time.sleep(5)

state_thread = threading.Thread(target = save_state)
state_thread.setDaemon(False)
state_thread.start()

# variable is changed outside this function and also in another thread(not state_thread).

Ответы на вопрос(1)

Ваш ответ на вопрос