Perl 스크립트를 호출하는 방법을 알려주는이 사이트에서 질문을 찾았습니다. Python. 이것은 완벽하게 작동파이썬에서 Perl 스크립트를 호출하여 값을 계속 반환합니다.
pipe = subprocess.Popen(["perl", "./Perl_Script.pl", param], stdout=subprocess.PIPE)
result = pipe.stdout.read()
하지만, 유일한 문제는 펄 스크립트를 실행하는 데 몇 분 정도 걸립니다이다 : 나는 현재이를 달성하기 위해 다음 코드 줄을 사용하고 있습니다. Perl 스크립트가 끝나면 간단한 print 문을 사용하여 파이썬으로 돌아가려면 결과 인 Python에서 변수으로 설정해야합니다.
Perl 스크립트에 몇 초마다 Python으로 연속적으로 반환 될 수있는 print 문을 몇 초 동안 포함하고 마지막에 긴 목록을 반환하는 대신 print 문을 더 포함 할 수있는 방법이 있습니까?
궁극적으로 내가하고있는 일은 Perl 스크립트를 사용하여 데이터 포인트를 얻은 다음 파이썬으로 다시 보내어 아이 다이어그램을 그립니다. 펄 스크립트가 끝날 때 아이 다이어그램을 그리는 데 몇 분이 걸리는 대신 파이썬에 데이터의 세그먼트를 연속적으로 반환하여 매 플롯이 몇 초마다 업데이트되도록하고 싶습니다.
perl 스크립트의 중간 단계에서 간단하게 인쇄 해 보았습니까? 나는 그 질문이 무엇인지 모르겠다. –
예.하지만 python 변수 _result_는 perl 스크립트 실행이 완료 될 때까지 업데이트되지 않습니다. 그리고 예, 나는 perl 스크립트 전체에 더 많은 print 문을 넣을 수 있습니다. 그리고 이것들은 반환됩니다. 그러나 perl 스크립트가 끝나면 모두 반환됩니다. – dmranck
파이프로 밀어 넣을 때 버퍼링을 끄는 것과 파이프 입력을 버퍼링하지 않도록하는 것에 대한 대답이 있습니다. 둘 다해야합니다. –