Patch to propagate Python thread names to system thread names
Project description
namedthreads
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.
The problem
You can name threads in Python like so:
import threading
my_thread = threading.Thread(target=my_func, name="my-thread")
But when running ps
, top
and similar, you'll notice that the thread name isn't visible in these tools,
making threading bugs somewhat harder to debug.
The solution
A comment in bpo-15500 lines out a monkeypatch that uses ctypes
to set the name using libpthread.pthread_setname_np
.
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.
Before | After |
---|---|
Usage
Install
pip install namedthreads
Manual patching
Run this as early as possible in your code:
import namedthreads
namedthreads.patch()
Automatic patching
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, NAMEDTHREADS
.
Automatic patching is only activated if this environment variable is set
NAMEDTHREADS=1 python myscript.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file namedthreads-1.0.tar.gz
.
File metadata
- Download URL: namedthreads-1.0.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8dea2d2a9b31b2d558634eef2a1f3f09726897bfdb03bcc56439885271f01c8 |
|
MD5 | eeae61f33ce208f86047d976b01c0dcd |
|
BLAKE2b-256 | 8bad52189fe39e5fa67c737832e1bd9320822b6e7e71adaeb8c4a2fcd5a6135b |