Python コードの呼び出しには実行に時間がかかり、数時間、約 5 ~ 6 時間かかると予想されます。 Python コマンドをシェルだけで直接実行する場合は問題ありませんが、このように Java を使用して Python を呼び出すと、しばらくすると Python から出力がなくなるという問題が発生します。 Python が実行されているかどうかを判断する方法は、継続的にファイルを書き込み、時々ファイル システムにファイルを書き込むことです。 Python コマンドをシェルに直接入力する場合は正常です。 Java が Python を呼び出します。3 時間以上経過してもファイルは生成されませんが、htop を使用して確認すると、スレッドはまだ存在します。動作環境はubuntu
です
Java と Python の間の相互作用について、参考までにアイデアを提供します。以前、ソケットを使用して、モバイル端末が Java スクリプト、サーバーが Python で、Java が対話のために文字列を Python サーバーに送信するプロジェクトを実行したことがあります。あなたが試すことができます。
JavaでPythonコードを直接実行できるjythonをチェックアウトできます
このコードには問題があります:
リーリーは、最初にB
getInputStream()
で処理され、次にgetInputStream()
再处理AwaitFor
AwaitFor
で処理される必要があります。これは、Java がパイプを介して呼び出すプログラムと通信するためです。そうでない場合は、パイプを読み取ります。やがて、呼び出されたプログラムが標準出力への書き込み中にブロックされる可能性があります。 したがって、正しい順序は次のとおりです:リーリー
別の質問を残してください:inputStream
还是先读errorStream
呼び出されたプログラムが最初に stderr に書き込み、次に stdout に書き込んだ場合でもブロックされませんか?まず Java を読むべきですか?