2013-07-18 1 views
0

터미널을 통해 mpirun 명령을 전달할 때 정상적인 (예상되는) 결과는 많은 데이터가있는 출력 파일입니다.터미널에서 실행될 때와 다른 방식으로 동작하는 파이썬 코드

그러나 파이썬 스크립트를 통해 코드를 전달할 때 예상되는 모든 출력 파일이 만들어 지지만 데이터는 포함되어 있지 않습니다. 이것에 대한 세계적인 설명이 있습니까? os.system과 subprocess를 사용하여 여러 가지 방법으로 코드를 시도했습니다. 또한 백그라운드에서 코드를 실행하고 실행하는 방법을 시도했습니다. 또한 프로그램에서 데이터를 출력하지 않고 출력 파일에 저장하는 방법을 시도해 보았습니다. 모두 동일한 결과를 제공합니다. mpirun이이 성공적으로 실행되고 있지 않은 경우

os.system("mpirun -np 4 /home/mike/bin/Linux-ifort_XE_openmpi-1.6_emt64/v2_0_1/Pcrystal > mgo.out") 

답변

0

그 동작을 얻을 수있는 가장 간단한 방법은 다음과 같습니다

는 코드입니다.

명령 줄에서, 내가 실행하는 경우 예를 들어

not_actually_a_command > myFile.txt 

MYFILE.TXT가 생성되지만 비어 있습니다 (메시지를 stderr로 인쇄 된 "을 (를) 찾을 수 없습니다 명령은"그렇게하지 않습니다 잡힌 ">").

에 mpirun을 완전히 확인 된 경로를 사용하십시오

당신의 접근 방식과 본질적으로 뭔가 문제가있을 것 같지 않습니다. 내가

os.system("echo hello, world >hello.txt") 

을 수행 할 때 그것의 "안녕, 세계"로 끝나는, 그래서 당신이 얻을 경우 명령은 당신을 위해 작동해야 실행합니다.

+0

나는 동의하지만 명령이 작동합니다. mpirun 명령을 터미널에 직접 복사하면 완벽하게 작동합니다. –

+0

python 스크립트에서 완전히 해결 된 경로를 사용해 보셨습니까? – BostonJohn

0

당신은 전체 경로를

os.system("/complete/path/to/mpirun 

를 제공하기 시작하고, 인쇄 결과를 인쇄 (os.system을 ... 등.), 우리가 무엇이 잘못되었는지를 알 수 있도록 오류를 게시해야한다. 서브 프로세스 모듈을 사용할 때 "shell = True"가 필요할 수 있습니다.

+0

나는 이것을했는데, 0을 반환한다. 모든 것이 작동해야한다는 것을 나타낸다. –

관련 문제