У меня есть класс и в нем мне нужно вычислить некоторые метрики, так как их очень много я попытался добавить несколько потоков используя multiprocessing. Но я получаю ошибку:
cannot pickle '_thread.lock' object
наткнулся на решение данной проблемы вынесом функции из класса. Я так и поступил, но получаю такую же ошибку. В чем может быть проблема.
Вот мой код:
class StartGetData:
def start(self):
tags = self.tags
while True:
parametrs = []
for tag in self.tags:
if (tag[0] in self.dict_last_time) and (self.dict_last_time[tag[0]] is not None):
parametr = {
"client": self.client,
"tag": tag[0],
"database_name": self.database_name,
"table_name": self.table_name,
"table": self.table_fields,
"last_time": self.dict_last_time[tag[0]]
}
else:
parametr = {
"client": self.client,
"tag": tag[0],
"database_name": self.database_name,
"table_name": self.table_name,
"table": self.table_fields,
"last_time": None
}
parametrs.append(parametr)
pool = multiprocessing.Pool(1)
resalt = pool.map(run_function, parametrs)
pool.close()
pool.join()
В функции, которая вызывается создаются ссылки на несколько других сингалтон классов (Возможно это важно)