zeromq 和 python:没有睡眠命令不发送
Posted
技术标签:
【中文标题】zeromq 和 python:没有睡眠命令不发送【英文标题】:zero mq and python : not sending without sleep command 【发布时间】:2021-08-04 02:45:36 【问题描述】:如果我在循环中发送一个没有休眠的命令,zeromq 将不会发送数据。但是,如果循环中的睡眠时间非常短,例如 time.sleep(0.1),它会很好地发送数据。为什么?
这个版本的代码有效:
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(0.1)
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)
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 )
【问题讨论】:
你应该知道0.1
和000000000000000000000000000000000000000000000000000000000000.1
是一模一样的。
【参考方案1】:
我发现 pyzmq 官方的例子也是休眠 0.1 秒
来源:https://github.com/zeromq/pyzmq/blob/main/examples/pubsub/topics_pub.py#L61
这个例子(topics_pub 和 topic_sub 在同一个存储库文件夹中)适用于一些字节的更改字符串。
【讨论】:
以上是关于zeromq 和 python:没有睡眠命令不发送的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ZeroMQ 从 C# 客户端向 C++ 服务器发送消息