Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 1, 2016 15:39:36

_alexs_
Зарегистрирован: 2012-04-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор техники реализации многопоточного приложения

Есть приложение для обработки данных, в котором реализованы различные алгоритмы. Алгоритм может быть как собственноручно написанный, так и оберткой над сторонними консольными приложениями. Сейчас все делается в одном потоке и нет возможности запустить несколько алгоритмов одновременно. Хочу переделать, чтобы можно было запускать алгоритмы в отдельных потоках.

Схема работы следующая. В главном окне приложения выбирается алгоритм, открывается его диалог настройки и задаются параметры и пути к обрабатываемым данным. Затем алгоритм запускается. Аналогичным образом запускается второй, третий и т.д. алгоритмы. В процессе работы алгоритма должен обновляться прогрессбар в его окне и выводиться отладочные/информационные сообщения. Также должна быть возможность преждевременного завершения алгоритма по хапросу пользователя.

Думаю использовать связку QThreadPool и QRunnable, но может есть другие, более подходящие варианты?

Офлайн

#2 Фев. 1, 2016 20:34:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Выбор техники реализации многопоточного приложения

_alexs_
В процессе работы алгоритма должен обновляться прогрессбар
Он должен показывать разумные значения? Без поддержки со стороны алгоритма думаю это реализовать нельзя.
_alexs_
но может есть другие, более подходящие варианты?
Мне subprocess кажется более разумным. Запустить и остановить досрочно приложение он позволяет.
1. Можно будет использовать и отлаживать алгоритмы без использования GUI.
2. Сторонние процессы все равно надо запускать, поэтому QThreadPool тут будет бесполезным усложнением.
3. QRunnable вообще мне непонятно зачем нужен (не спец по Qt может и ошибаюсь).



Офлайн

#3 Фев. 2, 2016 16:37:50

_alexs_
Зарегистрирован: 2012-04-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор техники реализации многопоточного приложения

Спасибо. Буду пробовать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version