Задать вопрос
gunya
@gunya

Python — два main loop

Всем привет. Изучаю python, пишу программу, jabber-клиент с gui.

Проблема в чем:
В обеих программах нужно в цикле обрабатывать информацию, для XMPP нужно что-то вроде

client = xmpp.protocol.Client(...)

while true:
....client.Process()


А во всех обертках для GUI (Tkinter, PySide, я особо не искал, в принципе), нужно также делать mainloop (Пример для PySide):

# Create a Qt application
app = QApplication(sys.argv)

# Something...

# Enter Qt application main loop
app.exec_()


Так вот — проблема в том, что мне нужно это сделать одновременно, пока на ум приходит только написание костылей. Есть ли какая-нибудь возможность реализовать такое приложение? Если да, то как? Если в какой-то библиотеке есть возможность это сделать базовыми средствами, было бы чудно. Скажите, в какую сторону копать.
  • Вопрос задан
  • 3819 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@yeputons
Событийно-ориентированность — это хорошо.

А вообще вас спасут потоки (threads)
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
coxx
@coxx
Кстати, скорее для общего развития, потоки — это не единственный подход к разработке сетевого клиента с GUI. К примеру, есть фреймворк Telepathy. В нем сетевой клиент — это, по сути, демон, который взаимодействует с фронтэндом через D-Bus.
Ответ написан
Комментировать
Lifelover
@Lifelover
Потоки — это зло.
Ответ написан
Комментировать
coxx
@coxx
Традиционный GUI-вый mainloop — это, по сути, обычный «while true:», в котором, среди прочего, происходит перерисовка интерфейса и обработка ввода от пользователя. Поэтому в однопоточной программе GUI будет зависать на любых блокирующих операциях (вычисления, ввод-вывод или просто time.sleep()).

Если Вы хотите освоить не только python, но и сам Qt, то стоит посмотреть на Qt-шные потоки.
Ответ написан
Комментировать
Mobyman
@Mobyman
Если интересно, могу скинуть свой вариант виселицы сетевой отказоустойчивой на питоне, она правда дилетантская, но может поможет:)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 19:55
7000 руб./за проект