Как увеличить количество сообщений в секунду в Paho с помощью Python - PullRequest
0 голосов
/ 28 февраля 2019

Я использую paho-mqtt от Eclipse.Я установил Paho на свой Raspberry Pi 3 B + и на свой ноутбук, работающий на Ubuntu 16.04.Я подключил Raspberry Pi к ноутбуку с помощью кабеля локальной сети.Я использую свой ноутбук в качестве сервера, то есть я использую localhost в качестве сервера.

Я публикую из Raspberry Pi, и я могу публиковать только около 200 сообщений в секунду.С другой стороны, мой ноутбук, будучи подписчиком, может принимать только около 20-25 сообщений в секунду.Я приложил код для издателя и подписчика.Как я могу отправлять больше сообщений?

Код издателя:

import paho.mqtt.publish as mqtt
import time
import serial

ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
time.sleep(2)

a = time.time()
num = 0

while (time.time() - a) < 1.0:
    try:
        data = int(ser.readline())
        mqtt.single("test", data, hostname="10.42.0.1")
        num = num + 1
    except ValueError:
        None

print(num)
ser.close()

Код подписчика:

import paho.mqtt.subscribe as mqtt
import time

b=0
a = time.time()

while True:
    msg = mqtt.simple("0", hostname="10.42.0.1")
    b=b+1
    print(msg.payload, b)

1 Ответ

0 голосов
/ 28 февраля 2019

Во-первых, последовательный ввод / вывод медленный;

Во-вторых, если вы прочитаете документ или источник paho-mqtt, вы обнаружите, что mqtt.single () создает новое TCP-соединение для каждого вызова функции,это ухудшает производительность, я предлагаю вам использовать класс mqtt.Client для выполнения работы;

Наконец, если скорость Pub действительно важна, существует реализация C MQTT client

...