前提・実現したいこと
メモリを開放したい。
発生している問題
Python
1import gc 2import pandas as pd 3 4scores = [] 5for num in range(13):#通貨別にデータを作りそれを通貨別でリストにDFを格納 6 7 train = conv_data(train_list[num]) 8 9 y_train = train['Target'] 10 X_train = train.drop('Target', axis=1) 11 12 del train 13 gc.collect() 14 #ここでも下と同様、開放してもメモリ使用率が減らない 15 16 cv_score = KFold_learn(categorical_features, X_train, y_train, 'xgboost') 17 scores.append(cv_score) 18 19 #ここまでy_trainとX_trainがメモリを多く消費しているのでここでそれを開放する 20 del y_train, X_train, cv_score 21 gc.collect() 22 #この後開放して確かにオブジェクトは消えたがメモリ使用率は変化しない。これを直してしっかり開放させたい。 23 """ 24 import sys 25 print("{}{: >25}{}{: >10}{}".format('|','Variable Name','|','Memory','|')) 26 print(" ------------------------------------ ") 27 for var_name in dir(): 28 if not var_name.startswith("_"): 29 print("{}{: >25}{}{: >10}{}".format('|',var_name,'|',sys.getsizeof(eval(var_name)),'|')) 30 31 で確認すると確かにy_train, X_trainは消せているが、tracemallocを使って確認すると、pandasがメモリを消費しているのがわかる。 32 """
補足情報(FW/ツールのバージョンなど)
Jupyter notebook(kaggle notebook), Python3を利用
回答1件
あなたの回答
tips
プレビュー