質問編集履歴

3

解決策の追記

2019/11/02 00:37

投稿

Amanokawa
Amanokawa

スコア41

test CHANGED
File without changes
test CHANGED
@@ -79,3 +79,39 @@
79
79
  windowsではタスクマネージャーのパフォーマンスでメモリの使用量が増えることを確認し、
80
80
 
81
81
  Colaboratoryでは12GのRAMのすべてを使用したためクラッシュしました。
82
+
83
+
84
+
85
+ **--- 解決 ---**
86
+
87
+ PILオブジェクトを定期的に読み込むことで解決しました。
88
+
89
+ ```python
90
+
91
+ # 繰り返し操作
92
+
93
+ while True:
94
+
95
+ # 1GB分の画像データをPILで読み込みリストに入れる
96
+
97
+ pil_img_list = [Image.open(name) for name in img_name_list]
98
+
99
+
100
+
101
+ # あらかじめ確認したメモリリークしない100周を回す
102
+
103
+ for i in range(100):
104
+
105
+ # ランダムに画像を選択してndarrayに変換する
106
+
107
+ random_index = np.random.randint(0, len(pil_img_list))
108
+
109
+ numpy_data = np.array(pil_img_list[random_index])
110
+
111
+
112
+
113
+ # 何かしらの操作
114
+
115
+ hoge(numpy_data)
116
+
117
+ ```

2

追記

2019/11/02 00:37

投稿

Amanokawa
Amanokawa

スコア41

test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,12 @@
11
11
 
12
12
 
13
13
  以下に行ったプログラムの簡単に記述しました。これを実行するとどんどん使用メモリが増えていきます。
14
+
15
+ ループを数えたところだいたい150順ぐらいで12GBを超えました。
16
+
17
+ 画像はすべて10MBくらいで大きな差はありません。
18
+
19
+ hoge関数を消しても相変わらずメモリは増えるのでnumpyの変換が原因なのかと思います。
14
20
 
15
21
 
16
22
 
@@ -42,7 +48,13 @@
42
48
 
43
49
  # 一応試した変数削除
44
50
 
51
+   print("numpy_data" in globals()) # True
52
+
45
53
  del numpy_data
54
+
55
+   gc.collect()
56
+
57
+ print("numpy_data" in globals()) # False
46
58
 
47
59
  ```
48
60
 

1

情報の追加

2019/10/30 12:34

投稿

Amanokawa
Amanokawa

スコア41

test CHANGED
File without changes
test CHANGED
@@ -38,6 +38,12 @@
38
38
 
39
39
  hoge(numpy_data)
40
40
 
41
+
42
+
43
+ # 一応試した変数削除
44
+
45
+ del numpy_data
46
+
41
47
  ```
42
48
 
43
49
 
@@ -45,3 +51,19 @@
45
51
  環境の容量の関係上あらかじめndarrayを用意することができません。
46
52
 
47
53
  上記に似た方法で処理を行いたいと思っています、ぜひ解決策をご教示願います。
54
+
55
+
56
+
57
+ 環境
58
+
59
+ ・windows10, Pycharm:2019.2.3, python3.7, Pillow:6.1.0, numpy:1.16.4
60
+
61
+ ・Colaboratory, Pillow:4.3.0, numpy:1.17.3
62
+
63
+
64
+
65
+ メモリに関しては知識不足で詳細にお答えすることができません。
66
+
67
+ windowsではタスクマネージャーのパフォーマンスでメモリの使用量が増えることを確認し、
68
+
69
+ Colaboratoryでは12GのRAMのすべてを使用したためクラッシュしました。