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