파이썬, 백그라운드 함수 실행 데코레이터 만들어 사용하기
글. 수알치 오상문
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
'Python 기초' 카테고리의 다른 글
파이썬, 백그라운드 스케줄러, 백그라운드 동작 apscheduler 예제 (0) | 2022.08.15 |
---|---|
파이썬, asyncio 함수 실행 취소 및 예외 처리 (0) | 2022.07.31 |
파이썬, 비동기 함수에서 동기 함수 호출하기 (0) | 2022.07.31 |
파이썬, 데코레이터 패턴으로 함수 호출 전후 반복 행동 처리하기 (0) | 2022.07.31 |
AttributeError: module 'collections' has no attribute 'Callable' (0) | 2022.07.30 |