У меня есть две отдельные функции, обе используют сокет для связи с сервером. Один служит только для поддержания живого сбора, а другой собирает полученные данные.
Например
def keep_connection():
while True:
#keeps connection by sending signal to the server
time.sleep(30)
def data_colector():
while True:
out = str(s.recv(auth_file.SocketConnectPort)
var_index = out.find('269=0')
var_1 = (((out[var_index + 13:var_index + 20]).replace('.', '')).replace('\\', '')).replace('x', '')
...
print(var_1, var_2, var_3)
Я запускаю их стенд одновременно с Threading и все работаетотлично,
t_1 = threading.Thread(target=data_colector)
t_2 = threading.Thread(target=keep_connection)
t_1.start()
t_2.start()
пока я меняю print в data_colector () на yield , он вообще не работает.
def data_colector():
print('confirm thread started')
while True:
#collects data received and converts it into few variables
yield var_1, var_2, var_3
Ошибка не возвращается, и похоже, что поток работает data_colector () даже не смотрит.
Это нормальное поведение, как я могу сделать data_colector () выход переменных?