当我为Python线程设置名称时,它不会显示在htop或ps上。ps输出只显示python
作为线程名称。有没有什么方法可以设置线程名,以便在类似的系统报告中显示它?
from threading import Thread
import time
def sleeper():
while True:
time.sleep(10)
print "sleeping"
t = Thread(target=sleeper, name="Sleeper01")
t.start()
t.join()
ps-T-p{PID}输出
PID SPID TTY TIME CMD
31420 31420 pts/30 00:00:00 python
31420 31421 pts/30 00:00:00 python
首先安装prctl module。(在debian/ubuntu上只需键入
sudo apt-get install python-prctl
)这个指纹
如果系统中安装了
prctl
,我使用以下monkey补丁将python线程的名称传播到系统:执行此代码后,可以像往常一样设置线程的名称:
这意味着,如果已经为线程设置了名称,就不需要更改任何内容。我不能保证,这是100%安全的,但它对我有效。
Prctl模块很好,提供了许多特性,但依赖于libcap dev包。最有可能安装Libcap2,因为它是许多包(例如systemd)的依赖项。因此,如果只需要设置线程名,那么在ctypes上使用libcap2。
请参阅下面改进的悲伤答案。
相关问题 更多 >
编程相关推荐