아래와 같이 구현하면, 메시지가 온 경우에만 메시지를 처리하도록 구현할 수 있다. 나는 "q"
라는 메시지를 받으면 main loop이 종료되도록 구현했다. socket.close()
가 필수적인지는 모르겠다.
import time
import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:5555")
t0 = time.time()
socket.subscribe("")
poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
t_prev = time.time()
while True: # Wait for next request from client
t = time.time()
socks = dict(poller.poll(0.1))
if socket in socks:
msg = socket.recv().decode()
print(msg)
if msg == 'q':
break
t_prev = t
socket.close()