If I send a command without a sleep in the loop, zeromq will not send the data. However, if a really really short duration sleep in the loop, for example time.sleep(000000000000000000000000000000000000000000000000000000000000.1), it sends the data fine. Why?
This version of the code works :
zero_mq_pub.py
import signal import time import zmq import random signal.signal(signal.SIGINT, signal.SIG_DFL) context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind('tcp://*:5555') float_no = str(random.uniform(20,60)).encode() for i in range(100): float_no = str(random.uniform(20,60)).encode() socket.send(float_no) time.sleep(000000000000000000000000000000000000000000000000000000000000.1)
zero_mq_pub.py (doesnt work )
import signal import time import zmq import random signal.signal(signal.SIGINT, signal.SIG_DFL) context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind('tcp://*:5555') float_no = str(random.uniform(20,60)).encode() for i in range(100): float_no = str(random.uniform(20,60)).encode() socket.send(float_no)
zero_mq_receiver
import signal import zmq signal.signal(signal.SIGINT, signal.SIG_DFL) context = zmq.Context() socket = context.socket(zmq.SUB) socket.connect('tcp://localhost:5555') socket.setsockopt(zmq.SUBSCRIBE, b'') while True: message = socket.recv_string() float_message = float(message) print("type is: ", type(float_message), " the message is ", float_message )
Anonymous Asked question May 14, 2021
Recent Comments