Как избежать появления ошибок при разделении объектов между потоками?
У меня есть программа, в которой мне нужно сохранить глобальную переменную в файл. Я делаю это, используя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).