ホームページ  >  に質問  >  本文

python3.x - Java が Python を呼び出し、Python コードが自動的に停止しますが、理由が見つかりません

リーリー

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

です
習慣沉默習慣沉默2669日前980

全員に返信(3)返信します

  • 天蓬老师

    天蓬老师2017-06-28 09:25:50

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-06-28 09:25:50

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

    返事
    0
  • 漂亮男人

    漂亮男人2017-06-28 09:25:50

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

    リーリー

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

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

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

    リーリー

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

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

    返事
    0
  • キャンセル返事