#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, похоже, не знает о них.