Программа на PyQt5 повисает при выполнении цикла

Задача такова, при нажатии на кнопку, у меня идёт подключение по ssh к каждому серверу, выполняет команду, и возвращает нужные данные, с терминала проходит всё хорошо, сделал интерфейс, нажимаю на кнопку, и через сек 10-20 программа не отвечает, как решить проблему? Я не давно в python, писали за потоки, но я сомневаюсь что поможет Проблема при выполнении def smart()

    import sys
import smart
from PyQt5 import QtCore, QtGui, QtWidgets
from fb import Ui_MainWindow
import time


# Создание приложения
app = QtWidgets.QApplication(sys.argv)

# Создание формы и init ui
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
# if __name__ == "__main__":
# Логика приложения
def get_json():
    import api


    cp = api.Api()
    # Выводим процесс
    # ui.plainTextEdit.appendPlainText("Процесс:)")
    if ui.radioButton.isChecked():
        kvm = str("KVM-SSD-1")
        cp.get_api(kvm)
        data = smart.shell_cluster(kvm)
        out_win = "Собрал все данные в KVM-SSD-2.json"
    elif ui.radioButton_2.isChecked():
        kvm = str("KVM-SSD-2")
        cp.get_api(kvm)
        data = smart.shell_cluster(kvm)
        out_win = "Собрал все данные в KVM-SSD-2.json"
    elif ui.radioButton_3.isChecked():
        kvm = str("KVM-SATA-1")
        cp.get_api(kvm)
        data = smart.shell_cluster(kvm)
        out_win = "Собрал все данные в KVM-SATA-1.json"
    ui.plainTextEdit.appendPlainText(out_win)
    ui.plainTextEdit.appendPlainText(data)
def smart():
    import smart

    smart = smart.Smart()

    if ui.radioButton.isChecked():
        kvm = str("KVM-SSD-1")
        data = smart.shell_cluster(kvm)
    elif ui.radioButton_2.isChecked():
        kvm = str("KVM-SSD-2")
        data = smart.shell_cluster(kvm)
    elif ui.radioButton_3.isChecked():
        kvm = str("KVM-SATA-1")
        data = smart.shell_cluster(kvm)
        # print(data)
    for key in data:
        name = [data[key]['ip']]
        ip = [data[key]['ip']]
        # print(sm)
    ui.plainTextEdit.appendPlainText(name)
    ui.plainTextEdit.appendPlainText(ip)

ui.pushButton.clicked.connect(get_json)
ui.pushButton_2.clicked.connect(smart)

# Запустить основной цикл
sys.exit(app.exec_())

Ответы (0 шт):