Проблема в том, что мой код висит в цикле for этой функции.Эта функция вызывается как отдельный поток в главном скрипте большего размера.После пользовательского ввода основной сценарий устанавливает self.kill_switch
.
Этот код прекрасно работает, когда стандартный вывод имеет непрерывный вывод.проблема появляется, когда stdout пуст, код висит на for line in iter(lambda: stdout.readline(), ""):
, пока stdout не имеет строку данных.Как только stdout получает информацию, он записывает строку данных и проверяет условие kill_switch и завершает работу в соответствии с ним.Как установить время ожидания для for line
или проверить, является ли stdout пустым?
Есть ли способ установить оператор if
для передачи кода, если stdout пуст?
def remote_connection(self):
stdin, stdout, stderr = self.ssh.exec_command('python main_script.py', get_pty=True)
while not self.kill_switch.is_set():
for line in iter(lambda: stdout.readline(), ""):
self.data.put(line)
break
self.ssh.exec_command('\x003', get_pty=True)