0
Mainthread受信されていない:私はできませんグローバル変数はスレッド間で共有し、MQTTのpython
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:
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:
...
と機能の変化変数を持っているが理由を見つけました。
もう一つの問題は、それがこの方法でグローバルとしてこの関数と呼ばれるたびに、変数に設定するので、いくつかの他のオプションは、変数がグローバルにすることです。ちょうど良い見た目のコードのために。ありがとう – Roman
いいえ、 'on_message'関数の呼び出しごとに新しいローカル変数を作成するのではなく、グローバルバージョンを使用するようにランタイムに指示します – hardillb