Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Отображение имени потока python в мониторе процессов

#python


Необходимо в реалтайме отслеживать каждый поток python-процесса.
В Python'е есть возможность задать имя потока:

Thread(name='Test')


И в htop есть возможность отображать пользовательские имена потоков (F2 -> Display
options -> Show custom thread names).
Но пользовательские имена потоков все равно не отображаются. Вместо них указано название
интерпретатора.



Подскажите, где я неправ? Может быть есть другие средства мониторинга каждого потока
процесса?
Спасибо!
    


Ответы

Ответ 1



В классе Thread аргумент name служит только для нужд самого python, например когда вы делаете print. Для установки имени нужно вызвать prctl: import time from threading import Thread def set_name(name): from ctypes import cdll, byref, create_string_buffer libc = cdll.LoadLibrary('libc.so.6') buff = create_string_buffer(len(name)+1) buff.value = name libc.prctl(15, byref(buff), 0, 0, 0) def test(): set_name(b'SomeThread') while True: time.sleep(1) t = Thread(target=test, name='TestName') print(t) t.start() В htop будет вот так (запускал из ipython, поэтому есть еще другие thread без имени):

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

Отправить комментарий