|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
Обновление главного окна в PyQt507.12.2016, 15:50. Показов 19831. Ответов 38
Метки нет (Все метки)
Доброго Всем времени суток. Наверное уже не раз создавались подобные темы, но ответа на свой вопрос так и не нашел( Поэтому спрошу еще раз, уж извиняйте. Вообщем имеется прога на питоне(3.5.2) По сути брут-перебиралка. На указанном сайте проверяет логины(зарегистрирован такой или нет). Делает она это через прокси, естественно. В консольной версии отрабатывает на ура и без проблем. В оконной же версии(через PyQt 5.6) прога отрабатывает свой цикл, но при этом главное окно “зависает”. Что мы делаем в главном окне: Выбираем файл с прокси(он добавляется в очередь Queue). Выбираем файл с логинами(он тоже добавляется в очередь Queue, но уже в другую). Выставляем кол-во потоков(модуль threading), задаём таймаут соединения(модуль grab), выбираем тип прокси(http/socks), указываем куда сохранить результат. Далее запускаем обработку в несколько потоков через threading. Во время обработки, если прокси сервер не срабатывает(через try - except), то логин снова добавляется в очередь. Если прокси в очереди закончились, то файл открывается заного и создаётся снова очередь с прокси. И так, пока не закончатся все логины. 'Хорошие логины' добавляются в список и потом отдельной функцией записываются в файл(результат, который указали при выборе сохранения). В инете встречаются примеры через QThread, либо QObject. Но все они для PyQt4. Хотелось бы понять вообще принцип - какие именно данные засовывать в QThread, либо QObject. Надо ли использовать питоновский модуль threading или все реализовывать через QTread. Вообщем смысл - чтобы главное окно не зависало(оно отображает еще промежуточную информацию через лейблы - сколько чего проверилось)
0
|
|
| 07.12.2016, 15:50 | |
|
Ответы с готовыми решениями:
38
Дублирование главного окна при открытии нового окна PyQt5 При запуске окна из другого окна, методы класса не работают
|
|
|
|||||||||||
| 08.12.2016, 21:52 | |||||||||||
|
Можешь делать несколько раз запросы:
В большинстве случаев подобная асинхронка это неудобно, но для большинства случаев есть requests. Конкретно в данном случае может подойти.
0
|
|||||||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 08.12.2016, 22:18 | ||
|
0
|
||
|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
| 08.12.2016, 22:20 [ТС] | |
|
Ух, сколько всего почитать)) я, как новичек, пока еще по простому пути. Разберусь в нём, а уж потом усложнять потихоньку)) А, кстати, по поводу модуля requests. Использовал его вначале, но потом, как оказалось он не обрабатывает SOCK5. Тупо игнорит его и запускает напрямую, не кидая никаких ошибок. Тестировал на нескольких ресурсах и везде показывал мой чистый IP. Спасибо вам большое за ответы. Буду разбираться
0
|
|
|
|
|||
| 08.12.2016, 22:44 | |||
|
В таких случаях лучше потоки имею ввиду реальные потоки, а не "псевдо" как python
0
|
|||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|||
| 08.12.2016, 22:52 | |||
|
0
|
|||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|||
| 08.12.2016, 23:05 | |||
|
0
|
|||
|
|
||||||||
| 08.12.2016, 23:41 | ||||||||
Слабо себе представляю что бы он нормально выглядело.
0
|
||||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|||||||
| 09.12.2016, 10:48 | |||||||
|
Avazart, вот пример у меня на компе завалялся, только тут в старом стиле оформлено, сейчас нужно использовать async и await.
0
|
|||||||
|
|
|
| 09.12.2016, 11:11 | |
|
Ну так где тут цепочка взаимосвязанных запросов?
Типа авторизация - парсинг - запрос1 - парсинг +запрос2- .... Ясное дело что если нужно делать по одному запросу то выглядит нормально, проблема возникает когда нужно делать параллельно "целые сессии".
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 09.12.2016, 11:39 | |
|
Avazart, это один из примеров. С сессиями тоже сильно большого треша не будет.
0
|
|
|
|
|
| 09.12.2016, 13:49 | |
|
В том то и дело что будет, это основной минус.
Наткнулся на интересное видео: Конкурентность в Питоне с нуля.
Вживую. Доклад с PyCon US 2015 — ежегодной конференции python-разработчиков. Докладчик: Дэвид Бизли
0
|
|
|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
| 09.12.2016, 15:01 [ТС] | |
|
Господа, я тут прерву немного вашу дискуссию))) Задам пару нубских вопросов) Вообщем немного начинаю разбираться с коннектами и эмитами) по крайней мере получилось вывести информацию о кол-ве данных выбираемого файла в GUI. Теперь такой вопрос: у меня несколько лейблов на ГУИ висят. практически все будут обновляться в процессе работы парсера, выводя промежуточную информацию(сколько осталось, сколько проверено, сколько подошло, сколько прокси забраковалось и т.п). Мне для каждого лейбла нужно присваивать свой pyqtSignal? Или есть какой то более правильный способ?
0
|
|
|
|
|
| 09.12.2016, 15:13 | |
|
Все зависит от того что из перечисленного вы используете.
Если только QN...A...Manager то можно просто через setText() Если же потоки то необходима синхронизация, а ее можно достичь через сигнал/слот.
0
|
|
|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
| 09.12.2016, 16:33 [ТС] | |
|
0
|
|
|
|
||||||||||||
| 10.12.2016, 12:17 | ||||||||||||
1
|
||||||||||||
|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
| 11.12.2016, 15:36 [ТС] | |
|
Avazart, спасибо за подсказку. Так, теперь следующий момент всплыл)) По поводу зависания/отображения главного окна) Вроде бы получилось сделать, заработало. Использовал пример alex925(в начале темы выкладывал - через декоратор-отдельный поток). У меня главное окно запускает кнопкой старт функцию main(находящуюся уже в другом классе(QObject)). А там уже происходят всякие действия. Так вот, когда main отработает, в конце она выводит Qmessagebox стандартную с текстом, что все выполнилось и одна кнопка ОК. При нажатии на ОК, закрывается Qmessagebox(Qmessagebox.exec()), главное окно продолжает отображаться. Когда в линуксе запускал - то все было нормально. Запустив на Win_7, при нажатии ОК, винда говорит что возникли неполадки и предлагает отослать отчет. Наверняка я туплю, но вот где, пока еще не понимаю((
Добавлено через 5 часов 18 минут Всё, со своим же вопросом последним разобрался). Пришлось через сигнал передавать в главное окно, что функция своё отработала. И в главном окне уже вызывать QMessageBox. Тогда в win7 никаких ошибок не вылетает. Странно, что на линуксе все нормально было без этого Добавлено через 21 час 47 минут Появился ещё один вопрос). Программа работает, ГУИ не зависает. Но решил попробовать добавить кнопку СТОП. Задумка в том, чтобы при нажатии прерывалась работа потоков. Оставшиеся данные из очереди queue записывались в файл. Возможно ли вообще такое сделать? А то про потоки(threading) кто чего пишет - что их невозможно вообще остановить
0
|
|
|
|
|||||||||||
| 11.12.2016, 15:50 | |||||||||||
|
Можно попробовать останавливать по флагу.
Добавлено через 2 минуты
Кстати GIL гарантирует атомарность переменных boolean?
1
|
|||||||||||
|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
| 11.12.2016, 20:00 [ТС] | |
|
Чего то не получается. Или я не правильно делаю, или одно из двух) Уже даже попробовал вынести в отдельную функцию - что при нажатии СТОП - очищается очередь queue с Email. И все равно Гуи продолжает работать, обновляя промежуточные значения. Значит получается и потоки работают(
Добавлено через 3 часа 5 минут Всё, разобрался. Сам тупанул. забыл в конце task_done добавить для очереди, чтобы join() словил пустую queue
0
|
|
| 11.12.2016, 20:00 | |
|
Где и как правильно перерисовывать дочерние окна при изменении главного окна ? Запуск второго окна перед стартом главного окна Позиционирование дочернего окна относительно элемента главного окна Переход из окна главного меню на другие окна приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|