Найти - Пользователи
Полная версия: [threading] Как отдебажить потоки
Начало » Python для новичков » [threading] Как отдебажить потоки
1
Xion
Играюсь с потоками и встретился с таким моментом что исключения не выводятся в потоках, то есть тред просто помирает в тишине и не понятно из за чего
Проверять каждую строку print'ом или assert'ом мне кажется не вариант, есть ли какой то способ понять в чем трабл
FishHook
где код?
Xion
Методом подбора удалось определить что для requests.get был необходим Lock():

В коде использовано 100 потоков с запуском функции, часть кода которой ниже:
lock = threading.Lock()
def req(q):
  while not q.empty():
    with lock:
      try: r = requests.get('some_url', timeout=5)
      except Exception: continue

Может кто объяснить почему? и как можно дебажить такие случаи?
Если Lock() нет, то программа тупо виснет
infoing
Можно записями в лог дебажить. Естественно, у каждой записи должен быть проставлен идентификатор потока, чтобы по логу потом можно было понять где и что происходит.
PyCharm вроде поддерживает отладку потоков.
noob_saibot
Xion
Методом подбора удалось определить что для requests.get был необходим Lock():В коде использовано 100 потоков с запуском функции, часть кода которой ниже:
А если try - except убрать?
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