|
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
|
|
Обновление главного окна в PyQt507.12.2016, 15:50. Показов 19582. Ответов 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 | |
|
Помогаю со студенческими работами здесь
39
Где и как правильно перерисовывать дочерние окна при изменении главного окна ? Запуск второго окна перед стартом главного окна Позиционирование дочернего окна относительно элемента главного окна Переход из окна главного меню на другие окна приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|