线程和 MQTT 接收之间不共享全局变量 python
global variable is not shared between thread and MQTT receive python
主线程:
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(Broker, 1883, 60)
client.on_log = on_log
client.loop_start()
global alarm
alarm = True
while True:
try:
if alarm == True:
...
并且在函数中有变化变量:
def on_message(client, userdata, msg):
message = str(msg.payload)
if message.lower() == 'alarm off': alarm = False
elif message.lower() == 'alarm on': alarm = True
它在函数和 Mainthread 中就像单独的变量一样工作,我找不到原因。
var 应该在 on_message 函数中标记为全局变量,而不是在您拥有它的地方。
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(Broker, 1883, 60)
client.on_log = on_log
client.loop_start()
alarm = True
while True:
try:
if alarm == True:
...
和
def on_message(client, userdata, msg):
global alearm
message = str(msg.payload)
if message.lower() == 'alarm off': alarm = False
elif message.lower() == 'alarm on': alarm = True
主线程:
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(Broker, 1883, 60)
client.on_log = on_log
client.loop_start()
global alarm
alarm = True
while True:
try:
if alarm == True:
...
并且在函数中有变化变量:
def on_message(client, userdata, msg):
message = str(msg.payload)
if message.lower() == 'alarm off': alarm = False
elif message.lower() == 'alarm on': alarm = True
它在函数和 Mainthread 中就像单独的变量一样工作,我找不到原因。
var 应该在 on_message 函数中标记为全局变量,而不是在您拥有它的地方。
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(Broker, 1883, 60)
client.on_log = on_log
client.loop_start()
alarm = True
while True:
try:
if alarm == True:
...
和
def on_message(client, userdata, msg):
global alearm
message = str(msg.payload)
if message.lower() == 'alarm off': alarm = False
elif message.lower() == 'alarm on': alarm = True