일정한 시간 간격을 두고, 작업이 끝났는지 확인이 필요했다. 그래야 이전 작업의 결과를 이용한 다음 작업을 자동으로 진행시킬 수 있기 때문이다.
Python에서 threading이 있지만 처음에 한번이 무조건 실행이 되기 때문에, 목적에 맞지 않고 불편했다. 이것은 제쳐두고, 기본적인 기능들만 가지고 원하는 대로 코드를 만들 수 있었다.
#! /usr/bin/env python3
import subprocess
import sys
import time
import datetime
def watcher(sleep,task=''):
time.sleep(sleep)
cmd='squeue|wc -l && squeue --state="RUNNING"|wc -l'
lines=subprocess.check_output(cmd,shell=True).decode().split()
qline=int(lines[0])
rline=int(lines[1])
while qline > 1:
time.sleep(sleep)
print('*',task,datetime.datetime.now(),':',qline-1,'( RUNNING :',rline-1,')')
cmd='squeue|wc -l && squeue --state="RUNNING"|wc -l'
lines=subprocess.check_output(cmd,shell=True).decode().split()
qline=int(lines[0])
rline=int(lines[1])
return True
def main(sleep):
cmd=mainCMD+' -s1'
subprocess.run(cmd,shell=True)
watcher(sleep)
cmd=mainCMD+' -s2'
subprocess.run(cmd,shell=True)
if __name__=='__main__':
sleep=sys.argv[1]
main(sleep)
'Tools' 카테고리의 다른 글
tmux-cssh (0) | 2020.10.22 |
---|---|
TabView (0) | 2020.10.08 |
checkVCF (0) | 2020.09.15 |
Windows Terminal (0) | 2020.08.17 |
Slurm - Workload manager (0) | 2020.08.15 |
댓글