Skip to main content
Author:

Daniele Varrazzo

The setproctitle module allows a process to change its title (as displayed by system tools such as ps and top).

Changing the title is mostly useful in multi-process systems, for example when a master process is forked: changing the children’s title allows to identify the task each process is busy with. The technique is used by PostgreSQL and the OpenSSH Server for example.

The procedure is hardly portable across different systems. PostgreSQL provides a good multi-platform implementation: this module is a Python wrapper around PostgreSQL code.

Installation

setproctitle is a C extension: in order to build it you will need a C compiler and the Python development support (the python-dev or python3-dev package in most Linux distributions). No further external dependencies are required.

You can use pip to install the module:

pip install setproctitle

You can use pip -t or virtualenv for local installations, sudo pip for a system-wide one… the usual stuff. Read pip or virtualenv docs for all the details.

Usage

The setproctitle module exports the following functions:

setproctitle(title)

Set title as the title for the current process.

getproctitle()

Return the current process title.

The process title is usually visible in files such as /proc/PID/cmdline, /proc/PID/status, /proc/PID/comm, depending on the operating system and kernel version. These information are used by user-space tools such as ps and top.

setthreadtitle(title)

Set title as the title for the current thread.

getthreadtitle()

Get the current thread title.

The thread title is exposed by some operating systems as the file /proc/PID/task/TID/comm, which is used by certain tools such as htop.

Environment variables

A few environment variables can be used to customize the module behavior:

SPT_NOENV

Avoid clobbering /proc/PID/environ.

On many platforms, setting the process title will clobber the environ memory area. os.environ will work as expected from within the Python process, but the content of the file /proc/PID/environ will be overwritten. If you require this file not to be broken you can set the SPT_NOENV environment variable to any non-empty value: in this case the maximum length for the title will be limited to the length of the command line.

SPT_DEBUG

Print debug information on stderr.

If the module doesn’t work as expected you can set this variable to a non-empty value to generate information useful for debugging. Note that the most useful information is printed when the module is imported, not when the functions are called.

Module status

The module can be currently compiled and effectively used on the following platforms:

  • GNU/Linux

  • BSD

  • MacOS X

  • Windows

Note that on Windows there is no way to change the process string: what the module does is to create a Named Object whose value can be read using a tool such as Process Explorer (contribution of a more useful tool to be used together with setproctitle would be well accepted).

The module can probably work on HP-UX, but I haven’t found any to test with. It is unlikely that it can work on Solaris instead.

Releases history

Version 1.2

  • added getthreadtitle() and setthreadtitle().

  • Initialisation of the module moved to the first usage: importing the module doesn’t cause side effects.

  • Manage much longer command lines (#52)

  • Improved build on BSD, dropped ancient versions (issue #67).

  • Fixed build for Python 3.8 (#66, #72)

  • Added support for Python 3.9

  • Dropped support for Python < 3.6

Version 1.1.10

  • Fixed building with certain prctl.h implementations (issue #44).

  • Use setuptools if available (issue #48).

Version 1.1.9

  • Fixed build on VC (issues #20, #33).

  • Added MANIFEST.in to the source distribution to help with RPM building (issue #30).

Version 1.1.8

  • Added support for Python “diehard” 2.4 (pull request #3).

  • Fixed build on Mac OS X 10.9 Maverick (issue #27).

Version 1.1.7

Version 1.1.6

  • The module can be compiled again on Windows (issue #21).

Version 1.1.5

  • No module bug, but a packaging issue: files README and HISTORY added back into the distribution.

Version 1.1.4

  • The module works correctly in embedded Python.

  • setproctitle() accepts a keyword argument.

  • Debug output support always compiled in: the variable SPT_DEBUG can be used to emit debug log.

Version 1.1.3

  • Don’t clobber environ if the variable SPT_NOENV is set (issue #16).

Version 1.1.2

  • Find the setproctitle include file on OpenBSD (issue #11).

  • Skip test with unicode if the file system encoding wouldn’t make it pass (issue #13).

Version 1.1.1

  • Fixed segfault when the module is imported under mod_wsgi (issue #9).

Version 1.1

  • The module works correctly with Python 3.

Version 1.0.1

  • setproctitle() works even when Python messes up with argv, e.g. when run with the -m option (issue #8).

Version 1.0

No major change since the previous version. The module has been heavily used in production environment without any problem reported, so it’s time to declare it stable.

Version 0.4

Version 0.3

  • Module works on Mac OS X 10.2. Reported working on OS X 10.6 too.

Version 0.2

  • Added prctl() call on Linux >= 2.6.9 to update /proc/self/status.

Version 0.1

  • Initial public release.

Release files for setproctitle 1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for setproctitle 1.2
File Size Uploaded
setproctitle-1.2.tar.gz 23.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for setproctitle 1.2
File
setproctitle-1.2-cp39-cp39-manylinux1_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-64 Details
setproctitle-1.2-cp39-cp39-manylinux1_i686.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-32 Details
setproctitle-1.2-cp38-cp38-manylinux1_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-64 Details
setproctitle-1.2-cp38-cp38-manylinux1_i686.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-32 Details
setproctitle-1.2-cp37-cp37m-manylinux1_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 Details
setproctitle-1.2-cp37-cp37m-manylinux1_i686.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-32 Details
setproctitle-1.2-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details
setproctitle-1.2-cp36-cp36m-manylinux1_i686.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32 Details

Total release size: 304.9 kB

Release files / setproctitle-1.2.tar.gz

Download URL setproctitle-1.2.tar.gz
Size 23.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9b4e48722dd96cbd66d5bf2eab930fff8546cd551dd8d774c8a319448bd381a6
BLAKE2b-256 checksum
How to use checksums
a59559d0c3979739802b830f5a715e6986613ed2a33c93c823c256fb89fdd299
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp39-cp39-manylinux1_x86_64.whl

Download URL setproctitle-1.2-cp39-cp39-manylinux1_x86_64.whl
Size 35.2 kB
Tags CPython 3.9 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
1efd52cabc8137a9c213786aab0031dc9e39263aa07320f3d4df46b3acc6c3bb
BLAKE2b-256 checksum
How to use checksums
354423745e3a1ed62a709d752592e6f7b0dbe7e4319ae0db5670dae6d37e58ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp39-cp39-manylinux1_i686.whl

Download URL setproctitle-1.2-cp39-cp39-manylinux1_i686.whl
Size 34.3 kB
Tags CPython 3.9 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
da774fd1d10aaf19fe0ef1662f272cd6bbd7835996f1455538ca687f7f6e3e0a
BLAKE2b-256 checksum
How to use checksums
9abc07dc31f56fd123e8b14366bb856e61ec922da81d4090749a70fa8d7d0a22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp38-cp38-manylinux1_x86_64.whl

Download URL setproctitle-1.2-cp38-cp38-manylinux1_x86_64.whl
Size 35.9 kB
Tags CPython 3.8 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
2f01f4c828f08d70074eb9bc6810c854719f72037f4cdd3318f2469ebf65674c
BLAKE2b-256 checksum
How to use checksums
9ad36be7555b66c0c302460e252a513ebfce8c4e5bd3928098f59bcc989f03a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp38-cp38-manylinux1_i686.whl

Download URL setproctitle-1.2-cp38-cp38-manylinux1_i686.whl
Size 34.9 kB
Tags CPython 3.8 Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
980fbf15c5a09614b501cbb4920b829563527c23b682a555bb1fc7c46c2134e1
BLAKE2b-256 checksum
How to use checksums
c39ed7a30962978aeb08128b2343095468c13fa775eeb438ad1253e0b0321385
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp37-cp37m-manylinux1_x86_64.whl

Download URL setproctitle-1.2-cp37-cp37m-manylinux1_x86_64.whl
Size 36.5 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
262dad89d0126fcfda5f96c85964b74b594e443e11abd6b16730bf810b967e42
BLAKE2b-256 checksum
How to use checksums
d474f4d8f2a85767060d5f1ed7c89b51bd80f2328e06f1be057df99de75e3ad9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp37-cp37m-manylinux1_i686.whl

Download URL setproctitle-1.2-cp37-cp37m-manylinux1_i686.whl
Size 35.2 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
f85501c4a44af18e87d9814cbc525fa2c962d7c278ad64ae5634834b8b449a96
BLAKE2b-256 checksum
How to use checksums
ef525b1fbf86fdb9262f044383878281fbb022a249050296c36d1f4c2916074e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp36-cp36m-manylinux1_x86_64.whl

Download URL setproctitle-1.2-cp36-cp36m-manylinux1_x86_64.whl
Size 35.3 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
b5a24361df1d05dad8569688476932c9f67015fffbfdf6e07169a91f06cbe2dd
BLAKE2b-256 checksum
How to use checksums
2afc2f6446ee2696c74609fdd61072108ef0892a72783e016451b195ac3f2e81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release files / setproctitle-1.2-cp36-cp36m-manylinux1_i686.whl

Download URL setproctitle-1.2-cp36-cp36m-manylinux1_i686.whl
Size 34.2 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
a414d3083a92be6e5c896b68ed8bd4cbdb3d1f0286ec857ecca877bfbf91d084
BLAKE2b-256 checksum
How to use checksums
ccc05fc49b5452639756fd3fb702466fb3857c7a5b5df198ee227bd9f8ec883b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

Release history Release notifications | RSS feed

1.3.6

97 release files

1.3.5

85 release files

1.3.4

85 release files

1.3.2

72 release files

1.3.0

60 release files

1.2.3

71 release files

1.2.2

21 release files

1.2.1

9 release files

This release

1.2 This release

9 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1

2 release files

1.0.1

2 release files

1.0

2 release files

0.4

2 release files

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page