동기(synchronous : 동시에 일어나는)
- 요청을 보낸 후 응답을 받아야 다음 동작이 이루어지는 방식, 다음 코드가 blocking된다.
비동기(asynchronous : 동시에 일어나지 않는)
- 요청을 보낸 후 응답과 상관없이 다음 동작이 이루어지는 방식, 다음 코드가 blocking 되지 않는다.(=nonblocking)
python 코드에서 동기식 프로그래밍을 위해(?) 간단한 threading.Event()객체를 사용하였다.
Event 객체
thread 간의 간단한 통신을 위해 사용되는 객체
is_set() : 내부 플래그가 True면 그때만 True 반환
set() : 내부 플래그를 True로 설정
clear() : 내부 플래그를 False로 설정
wait(timeout=None) : 내부 플래그가 True가 될때까지 blocking함.
example code)
class Test:
def __init__(self):
print('Test')
self.evt = threding.Event()
self.start()
self.stop()
def stop(self):
print('stop')
time.sleep(1)
self.evt.set()
def start(self):
print('start')
self.evt.wait()
Test()
결과
Test
start
(1초뒤)
stop
간단한 동기 프로그래밍에 유용!!