>  Q&A  >  본문

python3.x - Java가 Python을 호출하면 Python 코드가 자동으로 중지되고 이유를 찾을 수 없습니다.

으아아아

파이썬 코드를 호출하면 실행 시간이 비교적 길어 몇 시간, 약 5~6시간 정도 걸릴 것으로 추정됩니다. 셸에서만 Python 명령을 직접 실행하면 문제가 없습니다. 그러나 java를 사용하여 이런 방식으로 Python을 호출하면 문제가 발생합니다. 일정 시간이 지나면 Python에 출력이 없습니다. Python이 실행 중인지 확인하는 방법은 파일을 계속 쓰고 가끔씩 파일 시스템에 파일을 쓰는 것입니다. python 명령을 쉘에 직접 입력하면 정상입니다. Java가 Python을 호출합니다. 3시간 이상이 지나면 파일이 생성되지 않지만 htop을 사용하여 확인하면 스레드가 여전히 존재합니다. 실행환경은 우분투

習慣沉默習慣沉默2669일 전977

모든 응답(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는 파이프를 통해 호출하는 프로그램과 통신하기 때문입니다. 시간이 지나면 호출된 프로그램은 stdout에 쓰는 동안 차단될 수 있습니다.

    올바른 순서는 다음과 같습니다:

    으아악

    다른 질문을 남겨주세요:

    inputStream还是先读errorStream호출된 프로그램이 먼저 stderr에 쓴 다음 stdout에 쓰는 경우에도 여전히 차단되지 않나요? 자바를 먼저 읽어야 할까요

    ? 🎜

    회신하다
    0
  • 취소회신하다