@medoedoff

Многопоточность Python?

Доброго времени суток, нужна ваша помощь. Пишу для дипломки софт, программа для обмена сообщениями, использую Matrix API. Вот в чем заключается задача
import sys
import requests
from multiprocessing import Process
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtQuick import *
from PyQt5.QtQml import *
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from api import Api


# engine = create_engine('sqlite:///data/sim.db')
# Session = sessionmaker(bind=engine)

if __name__ == '__main__':
    # session = Session()
    class Gui(object):
        # myApp = None
        appLabel = None
        # ctx = None
        win = None
        login = None
        password = None
        button = None

    gui = Gui()
    api = Api()

    myApp = QApplication(sys.argv)
    gui.appLabel = QQmlApplicationEngine()
    ctx = gui.appLabel.rootContext()
    ctx.setContextProperty("main", gui.appLabel)

    def m_gui():
        # User Interface
        gui.appLabel.load('MessengerGUI/main.qml')
        gui.win = gui.appLabel.rootObjects()[0]
        gui.login = gui.win.findChild(QQuickItem, "login")
        gui.password = gui.win.findChild(QQuickItem, "password")
        gui.button = gui.win.findChild(QQuickItem, "button")

    def button_click():
        # When button clicked send auth request to server
        api.auth(gui.login.property('text'), gui.password.property('text'))
        print(api.access_token, api.home_server, api.user_id, api.device_id)

    m_gui()
    gui.button.clicked.connect(button_click)

    gui_process = Process(target=m_gui())
    button_process = Process(target=button_click())

    gui_process.start()
    button_process.start()

    gui.win.show()
    sys.exit(myApp.exec_())


сейчас UI(User Interface в UI два поля логин и пароль) и функция отправляющая запрос на сервер запускаются вместе. Получается, что функция еще не получила данные с полей логин и пароль, сразу же отправляет запрос на сервер. Как сделать так, чтобы вот эта функция ждала, пока не получит данные с полей логин и пароль и чтобы UI во время отправки запроса продолжал свою работу.
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sly_tom_cat
@Sly_tom_cat
.
Если нужно ждать, то надо использовать семафоры или очередь (для передачи события).

Но код - крайне безумный, даже для примера...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы