저는 GNU/리눅스와 파이썬 2.7.3을 사용하고 있습니다. 나는 ffmpeg
처럼 Popen()
명령을 사용하여 오랫동안 설치된 시스템 프로세스를 실행하여 메인 파이썬 프로세스를 막지 않도록하고있다. 나는 그것을 작동하게 만들 수 없다.파이썬 : 메인 프로세스를 차단하지 않고 긴 스크립트를 실행하십시오.
내 첫 번째 시도는 스레드를 사용했지만, 그래픽 인터페이스가 제대로 작동하지 않기 때문에 그것은 조금 복잡하다 (그리고 나는 더 나은 방법이 있어야한다 가정)
가 그럼 난 포크를했지만, 그것은 탱크로 파리를 죽이는 것과 같습니다.이제는 Popen
을 사용하려고하는데, 인터넷에서 그 사용에 대한 많은 언급을 보았습니다. 그러나 제대로 실행하지 못했습니다. 어쩌면 예제를 오해하고 있습니다.
이 나는 시도했다 :
##command is ffmpeg like that works ok
p = subprocess.Popen(command, shell=True)
나는 또한 시도했다 :
p = subprocess.Popen(command,stdin=PIPE, shell=True)
보통 나는 오류 또는 sequentcial 행동 명령 끝을 얻을 후 메인 프로그램이 다시 시작됩니다. 내가 뭘 놓치고 있니?
명령 부분 :
global vidSource
global srtSource
global done
size = "3"
font = "/usr/share/fonts/truetype/freefont/FreeSerif.ttf"
command = 'mencoder ' + '"' + vidSource + '"' + " -oac copy -ovc lavc -lavdopts threads=2 -sub " + "'" + srtSource + "'" + " -subcp -utf8 -font "+ '"'+ font+ '"' + " -subfont-text-scale " + size + " -o " + '"' + vidSource + '2'+'"'
어떤 오류가 발생합니까? –
어떤 오류가 있습니까? 'Popen'은 새로운 프로세스를 생성하기 위해'fork()'(리눅스에서)를 사용합니다 ... 어떤 이유로 포크를하고 싶지 않다면 Popen은 실행 가능한 솔루션이 아닙니다. – tMC
죄송합니다, 지정하는 것을 잊지 마십시오. 나는 오류를 재현하려고 시도했지만, 나는 sequencial 동작을 게시 두 comands 함께 얻을. 역 추적 (마지막으로 가장 최근 통화) : 파일 "/home/fer/myapp/myapp/MyappWindow.py", 라인 129, on_addSubtitle_clicked P = subprocess.Popen (명령) 에서 :( – ferbuntu