¿Cómo evitar errores de decapado al compartir objetos entre hilos?

Tengo un programa en el que necesito almacenar una variable global en un archivo. Estoy haciendo esto usando elpickle módulo.

Tengo otrothread(Daemon =False, dethreading módulo) que a veces cambia el valor de la variable global. El valor también se modifica en alcance global (el programa principal).

Estoy volcando el valor de la variable en un.pkl archivo cada 5 segundos (usando otrothread dethreading módulo).

Pero encontré el siguiente error cuandodump Se ejecutó el método:

TypeError: can't pickle _thread.lock objects

¿Por qué está pasando esto? ¿Y qué puedo hacer para arreglarlo?

Nota: He encontrado algunas respuestas similares conmultiprocessing módulo. Pero necesito una respuesta parathreading módulo.

Código:

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).