У меня есть два файла Python main.py и helper.py.
Я хочу, чтобы мой main.py работал всегда, а код выглядит как
terminal_state = False
state = initialState #env.reset()
if __name__ == "__main__":
while True:
print('State: ', state)
state_encod = np.reshape(state, [1, state_size])
q_values = model.predict(state_encod)
action_key = np.argmax(q_values)
action = index_to_action_mapping[action_key]
next_state, reward, terminal_state = env.step(state, action)
state = deepcopy(next_stat
метод env.step, которыйВызывается из другого файла (вспомогательный файл). код вспомогательного файла
class Env():
def __init__():
#some initializations
def step(self,state,action):
#somecalculations
state_not_constructed = 1
print('Waiting for 30 sec')
time.sleep(30)
print('after sleep')
def on_connect(client, userdata, flags, rc):
if rc==0:
print("connected OK Returned code=",rc)
else:
print("Bad connection Returned code=",rc)
client.subscribe('ULHI/data/B2L3')
def on_message(client, userdata, message):
global state_not_constructed
state_not_constructed = 0
client.loop_stop()
print('after loop stop')
print(str(state_not_constructed))
def construct_state():
global client
### mqtt connection
broker_address = "105.221.205.212"
port = 7505
client = mqtt.Client(clean_session=True) #create new instance
print("connecting to broker")
client.loop_start()
client.connect(broker_address, port)
client.on_connect = on_connect
client.on_message = on_message #attach function to callback
construct_state()
i = 0
while state_not_constructed == 1:
print('in while loop')
print('state constructed')
что я должен сделать отступ, я жду, пока я получу сообщение от брокера mqtt, поэтому я добавил цикл while, как только я получаю сообщение, пока цикл должен быть брокероми остальная часть кода должна быть выполнена.
Но я не уверен, где я ошибаюсь, потому что я застрял в цикле while и не вышел. Может ли кто-нибудь помочь мне с тем, где я иду не так?
Спасибо.