原因
- 単純にメモリーが足りない
- subprocess.Popenを実行するプロセスのメモリが元々多い
メモリが元々多い??とは?
subprocess.Popenを実行するプロセスのメモリが元々多いとは?
subprocess.Popenはシステムコールのsys_cloneが使われていて、メモリがコピーされて使用量もコピーされるようです・・・
そんなの知らないよ・・・
tensorflowで大き目のモデルを読み込んだプロセスとかだと大き目になりがち。
その状態でsubprocess.Popenを使って非同期実行するとメモリがコピーされるのか?メモリ空間がコピーされるのかよくわからないがsubprocess.Popenコール時点の容量が消費されるみたいです。
単純にメモリーが足りないパターンの場合はどうしようもない。
対策
キュー化するとか??大げさになっちゃうなぁ~~。今回は、REST APIを作って小さいプロセスからsubprocess.Popenで非同期実行してみた。