파이썬, 백그라운드 함수 실행 데코레이터 만들어 사용하기

 

글. 수알치 오상문

 

import time
import threading

 

# @BACKGROUND 데코레이터 정의 
def BACKGROUND(func):
    '''
    백그라운드 스레드 데코레이터
    @BACKGROUND 표기를 함수 정의부 윗줄에 지정한다.   
    '''    
    def backgrnd_func(*a, **kw):
        threading.Thread(target=func, args=a, kwargs=kw).start()
    return backgrnd_func

 


# 백그라운드로 실행할 함수에 @BACKGROUND 데코레이터 지정 
@BACKGROUND
def background_func(num, count):
    # 지정된 시간 동안 1초 마다 메시지 출력
    for val in range(1, count+1):
        print(f"background_func + {num} –> {val}")
        time.sleep(1)

 


TEST 백그라운드 함수 호출  
background_func("[1]", 10)
time.sleep(0.5)
background_func("[2]", 5)

 

 

[실행결과]

background_func [1] –> 1

background_func [2] –> 1

background_func [1] –> 2

background_func [2] –> 2

background_func [1] –> 3

background_func [2] –> 3

background_func [1] –> 4

background_func [2] –> 4

background_func [1] –> 5

background_func [2] –> 5

background_func [1] –> 6

background_func [1] –> 7

background_func [1] –> 8

background_func [1] –> 9

background_func [1] –> 10

 

반응형

+ Recent posts