teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

解決策の追記

2019/11/02 00:37

投稿

Amanokawa
Amanokawa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,22 @@
38
38
 
39
39
  メモリに関しては知識不足で詳細にお答えすることができません。
40
40
  windowsではタスクマネージャーのパフォーマンスでメモリの使用量が増えることを確認し、
41
- Colaboratoryでは12GのRAMのすべてを使用したためクラッシュしました。
41
+ Colaboratoryでは12GのRAMのすべてを使用したためクラッシュしました。
42
+
43
+ **--- 解決 ---**
44
+ PILオブジェクトを定期的に読み込むことで解決しました。
45
+ ```python
46
+ # 繰り返し操作
47
+ while True:
48
+ # 1GB分の画像データをPILで読み込みリストに入れる
49
+ pil_img_list = [Image.open(name) for name in img_name_list]
50
+
51
+ # あらかじめ確認したメモリリークしない100周を回す
52
+ for i in range(100):
53
+ # ランダムに画像を選択してndarrayに変換する
54
+ random_index = np.random.randint(0, len(pil_img_list))
55
+ numpy_data = np.array(pil_img_list[random_index])
56
+
57
+ # 何かしらの操作
58
+ hoge(numpy_data)
59
+ ```

2

追記

2019/11/02 00:37

投稿

Amanokawa
Amanokawa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,9 @@
5
5
  使用したndarrayをdelしても変わりません。これはなぜなのでしょうか?
6
6
 
7
7
  以下に行ったプログラムの簡単に記述しました。これを実行するとどんどん使用メモリが増えていきます。
8
+ ループを数えたところだいたい150順ぐらいで12GBを超えました。
9
+ 画像はすべて10MBくらいで大きな差はありません。
10
+ hoge関数を消しても相変わらずメモリは増えるのでnumpyの変換が原因なのかと思います。
8
11
 
9
12
  ```python
10
13
  # 1GB分の画像データをPILで読み込みリストに入れる
@@ -20,7 +23,10 @@
20
23
  hoge(numpy_data)
21
24
 
22
25
  # 一応試した変数削除
26
+   print("numpy_data" in globals()) # True
23
27
  del numpy_data
28
+   gc.collect()
29
+ print("numpy_data" in globals()) # False
24
30
  ```
25
31
 
26
32
  環境の容量の関係上あらかじめndarrayを用意することができません。

1

情報の追加

2019/10/30 12:34

投稿

Amanokawa
Amanokawa

スコア41

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,18 @@
18
18
 
19
19
  # 何かしらの操作
20
20
  hoge(numpy_data)
21
+
22
+ # 一応試した変数削除
23
+ del numpy_data
21
24
  ```
22
25
 
23
26
  環境の容量の関係上あらかじめndarrayを用意することができません。
24
- 上記に似た方法で処理を行いたいと思っています、ぜひ解決策をご教示願います。
27
+ 上記に似た方法で処理を行いたいと思っています、ぜひ解決策をご教示願います。
28
+
29
+ 環境
30
+ ・windows10, Pycharm:2019.2.3, python3.7, Pillow:6.1.0, numpy:1.16.4
31
+ ・Colaboratory, Pillow:4.3.0, numpy:1.17.3
32
+
33
+ メモリに関しては知識不足で詳細にお答えすることができません。
34
+ windowsではタスクマネージャーのパフォーマンスでメモリの使用量が増えることを確認し、
35
+ Colaboratoryでは12GのRAMのすべてを使用したためクラッシュしました。