Найти - Пользователи
Полная версия: зависают потоки - как найти причину?
Начало » Python для новичков » зависают потоки - как найти причину?
1
Игнат
проблема такая: запускаю скажем 12 потоков, каждый делает свою работу - качает обычные веб-странички

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

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

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


очевидно что они как-то зависают и у них не вызывается process_result
подскажите, куда хотя бы копать? мб у питона есть какие-то лимиты на память или время работы, которые надо увеличить?
Soteric
http://python.su/forum/viewtopic.php?id=10426
Игнат
блин, ну очевидно же что оно мне не помогло никак
я попытался описать проблему иначе

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

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

и сейчас вот я уже окно закрыл, вроде не было такой реакции типа зависшее приложение - а в дебаггере процесс все ещё запущен и стоит на месте
Андрей Светлов
Из вашего объяснения я понял, что заткнулся запрос к серверу. urllib или что вы там используете.
К потокам это никакого отношения не имеет - они работают как могут.
Игнат
а как узнать почему он заткнулся?

upd: переписал класс работы с сетью на QNetworkAccessManager - проблема пропала
Андрей Светлов
А как узнать, почему моя программа не работает?
Поставьте таймаут на сокет поменьше, чем стандартно выставляется.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB