私はPython2.7スクリプトをいくつかの並列処理の魔法を行い、最後にFlask gui_loopに入れます。ある時点で、スレッドはsubprocess.Popenを使用してバックグラウンドプロセスを作成します。これは機能します。Python subprocess.Popen() - サブプロセスによりソケットが開いたままになる
私のスクリプトが終了すると、サブプロセスがまだ実行されている場合はフラスコgui_loopがで失敗として、私は、再び私のスクリプトを実行できない場合:netstatの-peanutで
socket.error: [Errno 98] Address already in use
私はソケットの所有権を確認することができますPythonスクリプトが終了すると、子プロセスに転送されます。これは、Pythonスクリプトとサブプロセスの両方が実行されているとき、それはどのように見えるかです:
[email protected]:~/PycharmProjects/foo/gui# netstat -peanut | grep 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 1000 763103 19559/my-subprocess
があります:
[email protected]:/tmp# netstat -peanut | grep 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 1000 840210 21458/python
をPythonスクリプトを終了した後、ソケットは近いが、その所有権は子プロセスに渡されませんこれを回避する方法はありますか?サブプロセス(Cで書かれている)は、そのソケット上で何もしていないので、それを必要としません。私はどうにかしてguiループソケットリソースを渡さずにサブプロセスを作成できますか?
私はもちろんプロセスを終了することはできますが、これは、いくつかの計算を中心に単純なGUIを構築し、GUIスクリプトが終了した場合に進捗を失わないようにするためには理想的ではありません。私はちょうどGUIのスクリプトを取得して再び実行することができる場合、サブプロセスへの接続を再接続するためのメカニズムを持っています。
R
これはトリックを行うようです。ありがとう。 –