将Python线程名称传播到系统线程名称的补丁
项目描述
namedthreads
这是一个将Python中设置的线程名称传播到系统的漏洞。
警告: 这仅用于测试/调试目的。请不要在生产环境中运行。
问题
您可以在Python中这样命名线程
import threading
my_thread = threading.Thread(target=my_func, name="my-thread")
但是当运行ps
、top
和类似的工具时,您会发现线程名称在这些工具中不可见,这使得线程错误难以调试。
解决方案
bpo-15500中的一个注释列出了一种使用ctypes
通过libpthread.pthread_setname_np
设置名称的猴子补丁。虽然这效果很好,但由于兼容性问题,它尚未包含在核心Python中。此模块将猴子补丁打包在一个易于安装的包中。
之前 | 之后 |
---|---|
用法
安装
pip install namedthreads
手动修补
尽早在您的代码中运行此操作
import namedthreads
namedthreads.patch()
自动修补
受Graham Dumpleton的autowrapt启发,此模块可以自动激活。由于此方法具有狡猾的特性,它通过检查环境变量NAMEDTHREADS
的存在来保护。只有当此环境变量设置时,才激活自动修补
NAMEDTHREADS=1 python myscript.py
项目详情
关闭
namedthreads-1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f8dea2d2a9b31b2d558634eef2a1f3f09726897bfdb03bcc56439885271f01c8 |
|
MD5 | eeae61f33ce208f86047d976b01c0dcd |
|
BLAKE2b-256 | 8bad52189fe39e5fa67c737832e1bd9320822b6e7e71adaeb8c4a2fcd5a6135b |