본문 바로가기

Python

(92)
[Python] Thread(4) - Lock, Unlock 공유자원을 Lock & unLock 하는 2가지 방식에 대한 정리. import logging from concurrent.futures import ThreadPoolExecutor import time import threading class FakeDataStore: # 공유 변수(value) def __init__(self): # 스택영역 self.value = 0 self._lock = threading.Lock() # 변수 업데이트 함수 def update(self, n): logging.info('Thread ***{}: starting update'.format(n)) # 뮤텍스 & Lock 등 동기화(Thraed synchronization 필요) # Lock 획득 / 방법1 self._..
[Python] Thread(3) - ThreadPoolExecutor import logging from concurrent.futures import ThreadPoolExecutor import time def task(name, n): logging.info('***Sub-Thread %s: starting', name) result = 0 for i in range(n): result += i logging.info('***Sub-Thread %s: finished result: %d', name, result) return result def main(): # Logging format 설정 format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefm..
[Python] Thread(2) - DeamonThread """ DaemonThread(데몬스레드) (1).백그라운드에서 실행 (2).메인스레드 종료시 즉시 종료 - 데몬스레드의 특징 (3).주로 백그라운드 무한 대기 시 이벤트 발생시 실행하는 부분 담당 -> JVM(가비지 콜렉터), 자동저장 (4).일반 스레드는 작업 종료시 까지 실행 """ import logging import threading import time # 스레드 실행 함수 def thread_func(name, d): logging.info("Sub-Thread %s: starting", name) for i in d: print("***Sub-Thread {}: {}".format(name, i)) # pass logging.info("Sub-Thread %s: finishing", na..
[Python] Thread(1) - Basic import logging import threading import time # 스레드 실행 함수 def thread_func(name): logging.info("**Sub-Thread %s: starting", name) time.sleep(3) logging.info("**Sub-Thread %s: finishing", name) # 메인 영역 if __name__ == "__main__": # Logging format 설정 format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S") logging.info("Main-Thread : before creatin..