본문 바로가기

파이썬

tmux / tqdm 사용법(중단없이 멀티태스킹/진행률 프로그레스바_progress bar)

반응형

평소에 오래 걸릴만한 코드를 실행하지 않아서 사용하지 않았지만,

터미널에서 변화를 보이지 않아서

언제 끝날지도 모르겠고

실행이 되는 중인지 확인하기도 어려워서

for문에 tqdm을 넣어봤다.

tqdm

python에서 tqdm 라이브러리를 이용해

작업진행률을 확인할 수 있다.

필자는 tqdm을 쓰지 않고

코드 중간 중간

def run_successrates(self, version1, top_k):
        dataframe = self.get_df_wo_header()        
        all_success_rates = list()
        for i in range(1, top_k + 1):
            try:
                success_rate = self.get_success_rates(i, dataframe)
            except KeyError
                success_rate = all_success_rates[-1]
            all_success_rates.append(success_rate)
            print(f"{version1}, success rate for top-{i} is: {success_rate}")
        """
        Returns:
            success_rates (list) : 모든 K에서의 success rate를 담고 있음 (크기는 Top-K)
        """
        return all_success_rates

다음과 같이 print해서 현재 어떤 version이 돌아가고 있고

success_rate가 어느 정도인지 확인하며 진행 단계를

확인을 해왔다.

이렇게 확인할 때의 단점은

코드를 짠 나만 진행 현황을 파악할 수 있다는 점.

그리고 너무 대용량의 코드가 돌아갈 때에는

아예 print가 되지 않기 때문에

마찬가지로 진행 여부를 확인할 수 없음.

for protein_name, group_df in tqdm(grouped):

뭐가 됐던간에 for문의 in 다음에 tqdm을 씌우면

이런식으로 진행 현황을 bar형태로 확인할 수 있음.

더불어서 시간이 어느정도 소요되는지도 예측할 수 있음.

그런데 이 때,

코드 돌아가는 시간이 너무 많이 걸린다?

그럼 이제 tmux를 사용해야지.

 

tmux는 컴퓨터를 끄거나 서버 접속이 끊겨도

코드가 돌아간다는 장점이 있다.

 

 

tqdm documentation

tqdm tqdm means "progress" in Arabic (taqadum, تقدّم) and is an abbreviation for "I love you so much" in Spanish (te quiero demasiado). Instantly make your loops show a smart progress meter - just wrap any iterable with tqdm(iterable), and you're done

tqdm.github.io

tmux

우선 tmux 목록을 확인하기 위한 명령어

 

tmux ls

현재 tmux로 돌리고 있는 것이 없어서

목록이 나오지 않음.

tmux에서 new session을 시작하려면

session_name을 만들어야한다.

나같은 경우 precisionrecall이라는 이름의

세션을 만들었음.

엔터를 치자마자

이런 빈 공간이 생성된다.

여기서 이제 폴더 내의 파이썬 스크립트를

구동시키자.

기존 터미널에서 사용하듯 동일하게 진행하면 된다.

tmux 내에서 tqdm 돌아가는 것도 확인 가능

tmux에서 빠져나오는 방법

ctrl+B, D

내가 처음 tmux를 접했을 때 쓰기 싫었던 이유가

tmux들어가긴 들어가는데 나오기가 힘들었기 때문

ctrl을 꾹 누른 상태에서 B를 눌렀다 떼고 D를 누른다.

ctrl+B+D 아님.

 

 

나왔다가 다시 들어가는 방법은

tmux attach -t {session_name}

tmux 들어가서 tqdm 진행상황 확인하면 굳

tmux 중단시키는 방법은

tmux kill-session -t {session_name}

인데 우선 tmux ls로 현재 돌아가고 있는 애가

뭐가 있는지 보자.

precisionrecall이라는 session 내에 1개의 window가 열려있음을 보여줌.

말그대로 kill해서 tmux 강제 종료.

tmux ls로 확인해봐도 아무것도 없음을 확인할 수 있다. 

 

이상 tqdm 사용해서 작업의 진행 상황 실시간으로 표시하고

tmux를 사용해 여러 창에서 다양하게 병렬 처리하는

multitasking 하는 방법을 정리해봤다.

반응형