テンソルフローを使用して大きな画像を前処理しています。私は記憶が急速に崩壊しているという問題を抱えていました。私はPythonでマルチプロセッシングを使うようになったので、いつでもメモリが完全に解放されます。Tensorflow:セッションをPythonマルチプロセスに渡す
私はPythonのマルチプロセスキューを使用していますが、なんらかの理由で私の親プロセスからテンソルフローセッションを子供に渡すことができません。いくつかの高度なデバッグ手法(いくつかの行ごとに何かを印刷する)を使用すると、私はセッションを利用する行の中でPythonがアイドルになっていることに気付きました。問題がある可能性がどのような
def subprocess(some_image, sess, q):
with sess.as_default():
# ... use sess and q ...
print "All good and well" #This is printed
some_image.eval() #Nothing happens here in console
print "Still all good and well" #This is not printed
if __name__ == '__main__':
# ... some initial operations ...
some_image = read_some_image()
sess = tf.Session()
q = Queue()
q.put(something)
p = Process(target=subprocess, args=(some_image, sess, q))
p.start()
p.join()
:
私のコードは次のようになりますか? 多くの感謝!
複数のセッションをマルチプロセッシングパッケージと並行して実行する方法を知りましたか? – MrRed
私が正しく覚えていれば、マルチプロセッシングプールで必要なことをすることができました。私が望んでいたのは、複数の関数呼び出しで1つのセッションを共有することでしたが、それはできませんでした。最終的に私はメモリ使用量を低く抑えるために他の方法を選択しました – mathetes