0
0

More than 1 year has passed since last update.

LinuxとPython3でsubprocess.Popenを使って"OSError: [Errno 12] Cannot allocate memory"が出たとき

Last updated at Posted at 2022-02-13

原因

  • 単純にメモリーが足りない
  • subprocess.Popenを実行するプロセスのメモリが元々多い

メモリが元々多い??とは?

subprocess.Popenを実行するプロセスのメモリが元々多いとは?
subprocess.Popenはシステムコールのsys_cloneが使われていて、メモリがコピーされて使用量もコピーされるようです・・・
そんなの知らないよ・・・:sob:
tensorflowで大き目のモデルを読み込んだプロセスとかだと大き目になりがち。
その状態でsubprocess.Popenを使って非同期実行するとメモリがコピーされるのか?メモリ空間がコピーされるのかよくわからないがsubprocess.Popenコール時点の容量が消費されるみたいです。

単純にメモリーが足りないパターンの場合はどうしようもない。:frowning2:

対策

キュー化するとか??大げさになっちゃうなぁ~~:thermometer_face:。今回は、REST APIを作って小さいプロセスからsubprocess.Popenで非同期実行してみた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0