0
와 하위 프로세스에 라인으로 라인을 인쇄하는 동안 제한 시간을 사용파이썬 - (파이썬 3.5)는 popen
I가 ((프로그램을 실행하는 동안) 라인으로 라인 STDOUT 인쇄 및 타임 아웃 기능을 유지하는 데 어려움을 겪고언젠가 후에 프로그램을 중단하십시오).
나는이 :
import subprocess as sub
import io
file_name = 'program.exe'
dir_path = r'C:/directory/'
p = sub.Popen(file_name, cwd = dir_path, shell=True, stdout = sub.PIPE, stderr = sub.STDOUT)
그리고 잠시
는 "P"를 실행하고,이 두 가지 수행for line in io.TextIOWrapper(p.stdout, encoding="utf-8"):
print(line)
그리고 수행
try:
outs = p.communicate(timeout=15) # Just to use timeout
except Exception as e:
print(str(e))
p.kill()
이 프로그램은 모든 출력 라인을 인쇄해야을 그러나 15 초 이상 시뮬레이션을 실행해서는 안됩니다.
"p.stdout"앞에 "p.communicate"를 사용하면 프로그램이 끝날 때까지 기다립니다. 다른 방법으로 사용하면 프로그램에서 시간 초과를 계산하지 않습니다.
나는 스레딩없이 그것을하고 싶다. 가능하다면, 가능하다. 그러나 나는 어떻게 (더 많은 연습과 공부가 필요한지) 모르겠다. :-(
추신 : 저는 실행중인 프로그램을 포트란으로 작성하여 물의 흐름을 시뮬레이트하는 데 사용됩니다. 창에서 exe를 실행하면 cmd가 열리고 각 타임 스텝마다 한 행이 인쇄됩니다. exe 파일에 입력을 변경 민감도 분석.