Отражают ли имена потоков Python количество открытых потоков?

#python #python-multithreading

#python #python-многопоточность

Вопрос:

Если я вижу трассировку стека, подобную следующей:

 Exception in thread Thread-101:
Traceback (most recent call last):
  (...)
 

Обязательно ли «Поток-101» означает, что существует 101 активный / открытый / снижающий производительность поток? Или эти имена работают как идентификаторы в базе данных, где число всегда увеличивается, даже если старые записи (потоки) удалены (закрыты)?

Ответ №1:

Из документов: https://docs.python.org/3/library/threading.html#threading .Thread.name

Строка, используемая только для целей идентификации. У него нет семантики.
Нескольким потокам может быть присвоено одно и то же имя. Начальное имя задается конструктором.

Кроме того, просто чтобы повеселить себя, вы можете попробовать это

 >>> from threading import Thread
>>> t1 = Thread()
>>> t1
<Thread(Thread-1, initial)>
>>> t2 = Thread()
>>> t2
<Thread(Thread-2, initial)>
>>> t2.setName('Thread-1')
>>> t2
<Thread(Thread-1, initial)>
>>> t1
<Thread(Thread-1, initial)>
>>> t1.name
'Thread-1'
>>> t2.name
'Thread-1'
 

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

Комментарии:

1. Есть ли какой-либо инструмент, в котором эти имена доступны для мониторинга? например, htop / ps, похоже, не знает о них.