I am fairly new to Python, but have run into a snag that I can't get past. I am trying to share a string variable between two processes. One process is capturing mqtt messages. I want the other
process to manipulate that data that is passed. Sharing data between these two processes has proven very difficult. Can you help? Thanks...
process to manipulate that data that is passed. Sharing data between these two processes has proven very difficult. Can you help? Thanks...
import multiprocessing
import time
import paho.mqtt.client as mqtt
import queue
q=queue.Queue()
def main2():
data = "start in main2"
print(data)
q.put(data)
def do_mqtt():
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.1.31", 1883)
client.loop_forever()
def on_connect(client, userdata, flags,rc):
print("Connected with Code:" +str(rc))
# Subscribe Topic
client.subscribe("mqtt/master/#")
def on_message( client, userdata, msg):
print ( str(msg.payload))
data = "on_message:" +str(msg.payload)
print(data)
q.put(1,data)
def do_it():
print("Number of cpu : ", multiprocessing.cpu_count())
while q:
print(q.get())
if __name__ == "__main__":
p1 = multiprocessing.Process(target=do_it(), args=())
p2 = multiprocessing.Process(target=do_mqtt(), args=())
p1.start()
p2.start()
p1.join()
p2.join()
print("starting Main ")
while q:
print(q.get())
