Python:MQTT,第2个进程不能干扰第1个进程

2024-06-07 00:35:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个mqtt(paho)文件,它侦听iot消息,然后执行一些操作。在一个测试项目中,我有两个进程,一个是“播放音频”,另一个是“停止”该进程

def on_connect(self, mosq, obj, rc):
    mqttc.subscribe(MQTT_TOPIC_START, 0)
    mqttc.subscribe(MQTT_TOPIC_STOP, 0)

def on_message(mosq, obj, msg):
    print "Topic: " + str(msg.topic)
    print "QoS: " + str(msg.qos)
    print "Payload: " + str(msg.payload)
    iot_data = json.loads(str(msg.payload))

    if (iot_data["action"]== 'capture'):
        subprocess.call('python play_audio.py', shell=True)
    elif (iot_data["action"]== 'stop'):
        subprocess.call('pkill -f play_audio.py', shell=True) 

第一个进程(播放音频)工作得很好,但第二个进程只能在第一个进程完成后调用。因此,第二进程不能停止“播放音频”

如何通过第二个进程停止第一个进程“播放音频”? 任何建议都将不胜感激


Tags: objdatatopic进程ondefmsgsubscribe
1条回答
网友
1楼 · 发布于 2024-06-07 00:35:36

subprocess.call()是同步的。从手册(我的重点):

Run the command described by args. Wait for command to complete, then return the returncode attribute.

如果需要异步调用,请使用^{}

相关问题 更多 >