|
2 / 2 / 0
Регистрация: 14.09.2018
Сообщений: 47
|
||||||
Блокировка интерфейса pyside (Qt) при реализации многопоточных приложений15.08.2022, 16:01. Показов 3735. Ответов 9
Здравствуйте. Реализовал приложение для опроса (пинговки) серверов, при помощи TCP запросов. Отправка запросов и прием ответов осуществляются в многопоточном режиме:
Возможно ли это побороть каким-то образом? Обновление статистических данных также происходит в отдельном потоке (каждую секунду, пока не завершатся основные потоки), однако визуально это происходит единожды, после завершения всех потоков.
0
|
||||||
| 15.08.2022, 16:01 | |
|
Ответы с готовыми решениями:
9
Проблема в pyTelegramBotApi MutationObserver не перехватывает программные события Не получается изменить имя родительского блока в цикле массива |
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||||||
| 15.08.2022, 16:56 | |||||||
Сообщение было отмечено rialbat как решение
РешениеДобавлено через 21 секунду Сейчас пример наковыряю) Добавлено через 10 минут
rialbat, если запустите этот код и нажмете кнопку, то запустится Worker по времени 5 секунд, но при этом счетчик в основном потоке продолжит обновляется. Мне кажется это то что +/- Вам было нужно. Добавлено через 1 минуту Не по теме: pyside6 у меня нет, но там все так же, возможны незначительные изменения
3
|
|||||||
|
2 / 2 / 0
Регистрация: 14.09.2018
Сообщений: 47
|
|||||||||||
| 15.08.2022, 18:54 [ТС] | |||||||||||
|
Буду пробовать, спасибо. Отпишусь, как что-нибудь получится.
Добавлено через 57 минут Сделал как у Вас, вроде работает, однако не совсем понял, как задать конкретное число потоков в пуле (или может максимальное число потоков). То есть допустим мне необходимо проверить 1 000 ip адресов, я предполагаю это организовать в 100 потоков, как это можно сделать с QThreadPool? Я следующим образом описал класс Worker:
0
|
|||||||||||
|
2 / 2 / 0
Регистрация: 14.09.2018
Сообщений: 47
|
||||||
| 15.08.2022, 20:21 [ТС] | ||||||
|
На данный момент реализация выполнения потоков выглядит следующим образом:
0
|
||||||
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||
| 16.08.2022, 08:41 | |||
|
rialbat, я всегда запускал qthreadpool с настройками по умолчанию, не меняя максимальное количество потоков. Но можете посмотреть в документации, там вроде такое можно сделать:
Call maxThreadCount() to query the maximum number of threads to be used. If needed, you can change the limit with setMaxThreadCount() . The default maxThreadCount() is idealThreadCount() . The activeThreadCount() function returns the number of threads currently doing work. см.тут Добавлено через 1 час 29 минут Добавлено через 13 минут Но мне кажется, потоки ограничены возможностью самого компа (например мой запускает 12 шт.), т.е. метод setMaxThreadCount представляет максимальное количество потоков, используемых пулом потоков, но эта штука ограничена idealThreadCount которое возвращает идеальное количество потоков, которые могут быть запущены в системе.
0
|
|||
|
2 / 2 / 0
Регистрация: 14.09.2018
Сообщений: 47
|
|
| 16.08.2022, 10:06 [ТС] | |
|
С этим разобрался, спасибо. Вроде работает как надо, правда результат выполнения функции (run) потоком можно вернуть только посредством эмита сигнала, я правильно понимаю? Или есть более грамотные ревеня?
0
|
|
|
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
|
|||||||
| 16.08.2022, 10:24 | |||||||
|
rialbat, сам пользуюсь вот такой конструкцией:
1
|
|||||||
|
2 / 2 / 0
Регистрация: 14.09.2018
Сообщений: 47
|
|
| 16.08.2022, 10:29 [ТС] | |
|
Понял Вас, тогда тоже через сигнал/слот. систему сделаю. Число потоков регулируется через GUI и устанавливается при помощи (self._threadPool.setMaxThreadCount(self ._threads)). Мне сначала казалось, что решение работает медленнее, чем через питоновские потоки, но вроде как правильно.
1
|
|
|
2 / 2 / 0
Регистрация: 14.09.2018
Сообщений: 47
|
|||||||||||
| 16.08.2022, 14:24 [ТС] | |||||||||||
|
Спасибо, посмотрю!
Добавлено через 3 часа 38 минут Организовал работы программы по системе сигнал/слот и наткнулся на одну проблему. Если для каждого из проверяемых ip адресов создать объект класса Worker, а затем подключить его сигналы к слотам основного класса, таким образом:
Я пробовал создать пул рабочих, равный количеству потоков в программе. А затем переопределять атрибут ip для каждого из объектов при назначении потоков:
0
|
|||||||||||
| 16.08.2022, 14:24 | |
|
Помогаю со студенческими работами здесь
10
Найти подстановку, при которой заданное множ-во дизъюнктов~P(x)~Q(g(a),y)Q(x,f(x))∨R(y)P(x)∨Q(x,f(x))становится невыполн STEAM VR , Liv, синхронизация видео в реальности и Vr( tilt brush ) Неисправность планок SDRAM? Видеорегистатор NVR8016 Ошибка необработанное исключение System.ComponentModel.Win32Exception Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|