Patch to propagate Python thread names to system thread names
This is a hack to propagate thread names set in Python to the system.
WARNING: This is only meant for testing/debugging purposes. Do NOT run in production.
You can name threads in Python like so:
import threading my_thread = threading.Thread(target=my_func, name="my-thread")
But when running
top and similar, you'll notice that the thread name isn't visible in these tools,
making threading bugs somewhat harder to debug.
A comment in bpo-15500 lines out a monkeypatch that uses
ctypes to set the name using
While this works beautifully, it hasn't been included in core python due to compatibility reasons. This module packages the monkeypatch in an easy to install package.
pip install namedthreads
Run this as early as possible in your code:
import namedthreads namedthreads.patch()
Inspired by Graham Dumpleton's autowrapt, this module can
be activated automatically. Due to the hacky nature
of this approach, it is guarded by checking the presence of an environment variable,
Automatic patching is only activated if this environment variable is set
NAMEDTHREADS=1 python myscript.py
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.