两个永不结束的python脚本之间的交互

busg9geu  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(374)

我有一个mqtt代理,我已经订阅了它并不断地接收数据。
代码


# broker.py

import paho.mqtt.client as mqtt
def on_message(client, userdata, message):
    print("message received ")
    # do some calculations on the data recieved.
    target_variable  = #stored after the calculations.

client.on_message=on_message #attach function to callback

print("connecting to broker")
client.connect(broker_address, port=port,) #connect to broker
client.subscribe("topic")
client.loop_forever() #stop the loop

所以当我运行这个python脚本时,它是一个永远的过程,不断地更新目标变量。我想在另一个脚本中使用这个目标变量。
代码


# main.py

import schedule
from broker.py import target_variable

def job():
    # use target_variable and perform some taks
    print(target_variable)

schedule.every(60).seconds.do(job)

while True:
    schedule.run_pending()

这也是一个永久的过程,每60秒运行一次作业。我想在main.py中使用broker.py中的target\u变量。
我无法在一个脚本中运行这两件事,如果我有单独的脚本并尝试在main.py中加载broker.py,broker.py只会执行而不会结束。
有人能帮我解决这个问题吗?

hpcdzsge

hpcdzsge1#

请将它们作为函数,并在单个脚本中作为deamon线程启动,这样它将永远运行,直到您停止脚本。例如:

def myfunc1(i):
    # any job you want to do
    pass
def myfunc2():
    # any job you want to do
    pass

t1 = Thread(target=myfunc1, args=(,))
t1.daemon = True
t1.start()
t2 = Thread(target=myfunc2, args=(,))
t2.daemon = True
t2.start()

相关问题