Я пытаюсь запускать учебный сценарий ML через каждые 1 час, но через каждый час использование памяти увеличивается примерно на 20%, а через 3-4 часа использование памяти достигает 90%, а затем этот сценарий выдает Ошибка памяти .
Мне интересно, почему память не освобождается, когда заканчивается функция поезда.
Хотя это поведение не отображается, если я запускаю функцию поезда вручную (не используя какой-либо планировщик потоков и вызывая функцию поезда дважды или трижды один за другим).
Любое предложение обучать модель после каждого определенного интервала.
Вот код.
import pickle
import pandas as pd
from pymongo import MongoClient
import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
def train():
client = MongoClient(databaseURI)
db = client['mydb']
movie_data = []
for index, obj in enumerate(db.movies.find({})):
movie_obj = {}
movie_obj['_id'] = obj['_id']
movie_obj['title'] = obj['title']
movie_obj['rating'] = obj['rating']
movie_data.append(movie_obj)
user_data = []
for index, obj in enumerate(db.users.find({})):
user_obj = {}
user_obj['_id'] = obj['_id']
user_obj['username'] = obj['username']
user_obj['movie_id'] = obj['movie_id']
user_obj['rating'] = obj['rating']
user_data.append(user_obj)
movie_data_df = pd.DataFrame(movie_data)
user_data_df = pd.DataFrame(user_data)
# some ML training ALGO
trainedModel = algo.train(user_data_df, movie_data_df)
trained.to_pickle('files/trained.pkl')
scheduler = BlockingScheduler()
scheduler.add_job(train, 'interval', hours=1, next_run_time=datetime.datetime.now())
scheduler.start()