2016-08-27 14 views
0

sbatch로 python 스크립트를 실행하고 싶었지만 sbatch로 python 스크립트를 실행하는 유일한 방법은 bash 스크립트를 사용하여 Python 스크립트를 실행하는 것입니다 . batch_main.sh을 가지고 같이 :설정 파일로 SLURM에서 sbatch를 사용하는 방법

#!/bin/bash 
#SBATCH --job-name=python_script 

arg=argument 

python python_batch_script.sh 

다음 실행 :

sbatch batch_main.sh 

이 가진 문제는 내가 그 보통이 아닌 하나의 숫자 때문에 (인수에 대해 별도의 구성 파일을 가지고 할 거라고 또는 인수)를 사용하고 배열 옵션을 사용할 수도 있습니다. 또한, 나는 보통 여러 다른 일괄 작업 (다른 구성)를 실행하므로 구성 파일을 변경해도 다른 sbatch 실행이 서로 방해가되지 않으면 좋을 것입니다. 작업이 대기열에 들어간 다음 설정 파일이 나중에 변경되면 sbatch를 실행했을 때 config의 복사본이 아니라 가장 최근의 config 파일이 실행됩니다. 이 문제를 해결하기 위해 sbatch 스크립트를 실행할 때 SLURM이 실제로 submission 스크립트를 내부 데이터베이스에 복사한다는 것을 발견했습니다 (묻은 후 발견했습니다 : Changing the bash script sent to sbatch in slurm during run a bad idea?). 따라서 필자는 실제로 구성을 bash 제출 스크립트에 하드 코딩하기로 결정했습니다 (제출 스크립트는 본질적으로 구성 파일을 작성합니다). 그런 식으로 제출 스크립트를 편집 한 다음 파일을 실행합니다. 그러나, 나는 이것을 피하고 싶지 않은 배시에서 글을 쓰게되기 때문에 이것을 멈추고 싶다.

이상적으로는 Python을 직접 실행하는 sbatch를 실행하고 싶습니다.

가능하지 않을 수 있으므로이 문제를 해결하기 위해 다른 옵션이 무엇인지 알고 싶습니다. 예를 들어, slurm이 파이썬 구성 파일과 같은 다른 파일을 내부 데이터베이스에 복사하여 작업 대기열에 넣고 싶다면 정확하게 실행하려는 작업을 실행할 수 있습니까? (sbatch 작업을 실행 한 다음 config 파일을 변경하는 것은이 작업을 수행하는 방법이 아니므로 설정 파일을 변경하면 문제가 발생할 수 있으므로 slrum은 config의 복사본이 아니라 config의 최신 복사본을 읽습니다. 직업이 도망 쳤을 때). 또는 다른 옵션은 무엇입니까? 나는 bash를 쓰는 것에 정말로 매달렸 는가 아니면 다른 이상한 해킹이 아닌 파이썬으로 설정을 다루기 위해 뭔가 다른 것을 할 수 있을까?

일반적으로 저는 사람들이 현실 세계에서 무엇을했는지 또는 좋은 연습/표준이 무엇인지 알고 싶었습니다.

+2

당신은 shebang 라인을 바꿀 수 있다는 것을 알고 있습니까? 예를 들어,'#!/bin/env python'은 스크립트가 파이썬으로 작성되었다고 가정하고'sbatch' 스크립트에 유효한 데비안 라인입니다. –

답변

0

파이썬 스크립트는 파이썬 새틴 (일반적으로 #!/usr/bin/env python)으로 시작하는 유효한 제출 파일입니다. 예를 들어

: 스크립트 import의 맞춤형 모듈 있다면, 당신은 그들이 현재 디렉토리에 거짓말 경우에도 PYTHONPATH를 설정해야 함을

#!/usr/bin/env python 
#SBATCH --time=... 
#SBATCH --partition=... 

import sys 
jobid=sys.environ["SLURM_JOB_ID"] 
print "Hello World from job %s" % jobid 

참고.