Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 24, 2011 15:08:55

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

зависают потоки - как найти причину?

проблема такая: запускаю скажем 12 потоков, каждый делает свою работу - качает обычные веб-странички

если работы немного - все заканчивают работу нормально
но если сделать так, чтобы они скачивали больше страниц - не все потоки заканчивают свою работу

как будто чем больше работы - тем больше потоков зависает
соответственно счетчик активных потоков замирает на 1-2, в лог больше ничего не выводится - просто останавливается на любой задаче

сам ГУИ не виснет - работает нормально, но если закрыть приложение - оно подвисает и приходится завершать его через диспетчер задач


очевидно что они как-то зависают и у них не вызывается process_result
подскажите, куда хотя бы копать? мб у питона есть какие-то лимиты на память или время работы, которые надо увеличить?



Офлайн

#2 Фев. 24, 2011 15:18:24

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

зависают потоки - как найти причину?

Офлайн

#3 Фев. 24, 2011 21:26:54

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

зависают потоки - как найти причину?

блин, ну очевидно же что оно мне не помогло никак
я попытался описать проблему иначе

я логировал каждое действие класса, работающего в потоке
и это дало мне лишь понимание того, что этот класс перестает работать на месте очередного запроса к серверу, который может и до этого выполняться несколько раз успешно

главное что process_result у потока не срабатывает
и никаких exception или ошибок нигде нет
все потоки закончили работу, а один, собака, просто повис!

и сейчас вот я уже окно закрыл, вроде не было такой реакции типа зависшее приложение - а в дебаггере процесс все ещё запущен и стоит на месте



Офлайн

#4 Фев. 24, 2011 21:31:48

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

зависают потоки - как найти причину?

Из вашего объяснения я понял, что заткнулся запрос к серверу. urllib или что вы там используете.
К потокам это никакого отношения не имеет - они работают как могут.



Офлайн

#5 Фев. 25, 2011 07:23:30

Игнат
От:
Зарегистрирован: 2010-10-02
Сообщения: 224
Репутация: +  0  -
Профиль   Отправить e-mail  

зависают потоки - как найти причину?

а как узнать почему он заткнулся?

upd: переписал класс работы с сетью на QNetworkAccessManager - проблема пропала



Отредактировано (Фев. 25, 2011 08:04:22)

Офлайн

#6 Фев. 25, 2011 07:52:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

зависают потоки - как найти причину?

А как узнать, почему моя программа не работает?
Поставьте таймаут на сокет поменьше, чем стандартно выставляется.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version