python3.x - Java が Python を呼び出し、Python コードが自動的に停止しますが、理由が見つかりません
習慣沉默
習慣沉默 2017-06-28 09:23:50
0
3
1026
リーリー

Python コードの呼び出しには実行に時間がかかり、数時間、約 5 ~ 6 時間かかると予想されます。 Python コマンドをシェルだけで直接実行する場合は問題ありませんが、このように Java を使用して Python を呼び出すと、しばらくすると Python から出力がなくなるという問題が発生します。 Python が実行されているかどうかを判断する方法は、継続的にファイルを書き込み、時々ファイル システムにファイルを書き込むことです。 Python コマンドをシェルに直接入力する場合は正常です。 Java が Python を呼び出します。3 時間以上経過してもファイルは生成されませんが、htop を使用して確認すると、スレッドはまだ存在します。動作環境はubuntu

です
習慣沉默
習慣沉默

全員に返信(3)
Peter_Zhu

Java と Python の間の相互作用について、参考までにアイデアを提供します。以前、ソケットを使用して、モバイル端末が Java スクリプト、サーバーが Python で、Java が対話のために文字列を Python サーバーに送信するプロジェクトを実行したことがあります。あなたが試すことができます。

いいねを押す +0
巴扎黑

JavaでPythonコードを直接実行できるjythonをチェックアウトできます

いいねを押す +0
漂亮男人

このコードには問題があります:

リーリー

は、最初に BgetInputStream() で処理され、次に getInputStream()再处理AwaitForA

waitFor で処理される必要があります。これは、Java がパイプを介して呼び出すプログラムと通信するためです。そうでない場合は、パイプを読み取ります。やがて、呼び出されたプログラムが標準出力への書き込み中にブロックされる可能性があります。

したがって、正しい順序は次のとおりです:

リーリー

別の質問を残してください:

inputStream还是先读errorStream呼び出されたプログラムが最初に stderr に書き込み、次に stdout に書き込んだ場合でもブロックされませんか?まず Java を読むべきですか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート