Google Colab.の無料GPUでプログラムを実行したところ、メモリ(RAM:12.72GB)が一気に消費されてしまいます。
原因と対策についてご教授いただきたいです。
・コード
Python
1#サマータイム期間外ならデータの時刻を1時間早くする(=サマータイムの時間にあわせる) 2import time 3new = [] 4new_append = new.append 5elapsed_time = 0 6t1 = time.time() 7 8def Summer(): 9 for i,x in enumerate(data["summer"]): 10 if x == "EST": # ESTなら1時間データを早くする 11 new_append(data.iloc[i,0:1]+timedelta(hours=-1)) 12 new[-1]["time"]=str(new[-1]["time"]) #上で型がdatetime64になるので戻す 13 else: # EDTならそのまま 14 new_append(data.iloc[i,0:1]) 15 if i%20000==0: #進捗確認用に20000データ毎に出力 16 print(i) 17 18Summer() 19new = pd.DataFrame(new) #【※】ここでメモリ消費が急増 20data.iloc[:,0:1] = new["time"] 21 22t2 = time.time() # 処理後の時刻 23elapsed_time = t2-t1 # 経過時間 24print(f"経過時間:{elapsed_time}") # 経過時間を表示
inputは以下のようなデータです。
・data(長さは実際は400,000程度)
time | summer | |
---|---|---|
0 | 2019-10-10 06:02:00 | EDT |
1 | 2020-11-23 06:02:00 | EST |
コードの【※】の箇所で120s程度の時間がかかり、メモリ消費が著しく増大します。
dataもnewのバイト数を調べてみましたが、数MB程度でデータ長が原因ではないのかな?と考えております。
(ちなみに、inputの長さが1,000,000を超えたものにすると、クラッシュします・・・)
・原因の確認をしたくて試したこと
1. 実行後に別のセルにて、先ほど宣言した変数をdelで消去しましたが、【※】で増大した分のメモリは解放されませんでした。
→やはり、変数のデータの長さは関係なさそう?
2. 下記のように一旦別の変数をかませてみてもメモリの増大量はほぼ変わりませんでした。
下記のコードの場合、2行目のnew1 = pd.DataFrame(new1)でメモリが増大します。
Python
1new1 = new.copy() 2new1 = pd.DataFrame(new1) 3new = data.iloc[:,0:1]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/12 10:34
2021/01/12 12:50
2021/01/12 20:27