使用mqtt的高内存使用率

使用mqtt的高内存使用率,mqtt,mosquitto,Mqtt,Mosquitto,我正在发送mqtt消息的终端中运行脚本。这些消息是大数组(我想模拟图像的发送)。因此,发件人的代码如下所示: import numpy as np import paho.mqtt.client as mqtt mqttBroker = "localhost" mqttClient = "Sender" client = mqtt.Client(mqttClient) client.connect(mqttBroker) while True:

我正在发送mqtt消息的终端中运行脚本。这些消息是大数组(我想模拟图像的发送)。因此,发件人的代码如下所示:

import numpy as np
import paho.mqtt.client as mqtt

mqttBroker = "localhost"
mqttClient = "Sender"

client = mqtt.Client(mqttClient)
client.connect(mqttBroker)

while True:
    arr = np.random.random((424,240,4)).astype(np.float32)
    arr = arr.tobytes()
    topic = "myDataName"
    client.publish(topic,payload=arr)
接收器的代码为:

import numpy as np
import paho.mqtt.client as mqtt

def on_message(client, userdata, message):
    global n
    data = np.frombuffer(message.payload, dtype=np.float32).reshape(424,240,4)
    n += 1

if __name__ == "__main__":
    global n
    n=0
    mqttBroker = "localhost"
    mqttClient = "Receiver"

    client = mqtt.Client(mqttClient)
    client.connect(mqttBroker)

    client.subscribe("myDataName")

    client.on_message = on_message

    client.loop_start()

    while True:
        continue
我在两个不同的终端上运行这两个脚本。我安装了MOSQUITO-1.6.0(它是代理),我使用的是Windows10x64

问题是,mosquitto.exe将填充我的计算机的所有内存(32Gb RAM),直到消息传递为止。如果我终止发送方,接收方将继续接收消息,mosquito.exe将开始释放内存。因为我想发送图像,所以我对以前的消息(图像)不感兴趣。我只想在任何时候发送最新的图像。因此,如果有新消息,可以丢弃以前的消息


有人能帮我吗?谢谢。

MQTT不是流式传输原始高帧速率视频的好方法(这实际上就是您在这里所做的),请为发布服务器添加合理的延迟(例如0.1秒)。“你用的任何一台摄像机都可能是~24fps,谢谢你的回答,@hardillb。”。你有什么建议我可以用python来处理流式图像吗?我更倾向于建议,超级紧密循环发布不是一个现实的测试,这就是为什么我建议添加一个现实的延迟,谢谢你,@hardillb。我会再看一看。