Форум сайта python.su
пишу софт на python 3.2 с pyqt4
он многопоточный и каждый поток обращается в сеть через urllib
с недавних пор, видимо после каких-то изменений, софт стал намертво зависать в самых неожиданных местах, при работе с сетью
решил попробовать профилировать код
поиски привели меня к схеме
python3 -m cProfile -o out.pyprof start.pyw
pyprof2calltree -i out.pyprof -o my.out
kcachegrind my.out
написал тестовый скрипт
def test2():
print('test 2')
def test():
print('hello shit')
test2()
if __name__ == '__main__':
test()
Офлайн
ИгнатМожет пользовать отладочные декораторы?
есть ли средства
Офлайн
Вам дебажить надо, а не профилировать по-моему.
Офлайн
Функция test2 не видна в результатах, потому, что она и не вызывалась.
Это можно сделать явно:
import cProfile
def test2():
print('test2')
if __name__ == __main__:
cProfile.run("test2()")
Офлайн
вообще проблема была такая
библиотека работы с socks-прокси в urllib принимала timeout только в виде float
а если поступал не флоат - он игнорировался и брался дефолтный, который видимо стремится к бесконечности
заменил на int и код перестал останавливаться
вот как такое отдебажить? я юзал дебаггер только в комодо, но так толком и не разобрался как с его помощью что-то узнать
Офлайн
Игнат1) Read your code. Think.
как такое отдебажить
Офлайн
ИгнатЭто вам профайлер помог узнать? Расскажите как.
вообще проблема была такая
библиотека работы с socks-прокси в urllib принимала timeout только в виде float
Офлайн
нет, это мне помог узнать человек, портировавший эту библиотеку с 2.7 на 3.2 :)
Офлайн