56,966 blogs · [ { "id": "01a0821c-6684-700e-ad03-3082788803ab", "title": "From Python 3.3 to today: ending 15 years of subprocess polling", "url": "https://gmpy.dev/blog/2026/event-driven-process-waiting", "published_at": "2026-01-27T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-3082794496bc", "title": "Detecting memory leaks in C extensions with psutil and psleak", "url": "https://gmpy.dev/blog/2025/psutil-heap-introspection-apis", "published_at": "2025-12-22T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-3082794c98f9", "title": "Wheels for free-threaded Python now available", "url": "https://gmpy.dev/blog/2025/wheels-for-free-threaded-python-now-available-in-psutil", "published_at": "2025-10-24T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-3082796235cf", "title": "Speeding up pytest startup", "url": "https://gmpy.dev/blog/2025/speedup-pytest-startup", "published_at": "2025-04-03T22:00:00+00:00" }, { "id": "01a0877d-af10-7079-893c-0206d385a778", "title": "A Brave / Chrome extension to reorder new tabs", "url": "https://gmpy.dev/blog/2025/a-brave-chrome-extension-to-reorder-new-tabs", "published_at": "2025-04-01T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308279c12048", "title": "Letting go of Python 2.7", "url": "https://gmpy.dev/blog/2025/psutil-drop-python-27-support", "published_at": "2025-02-12T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827a84dc80", "title": "Recognize connection errors", "url": "https://gmpy.dev/blog/2023/recognize-connection-errors", "published_at": "2023-03-15T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827ab13469", "title": "Sublime Text: remember cursor position plugin", "url": "https://gmpy.dev/blog/2022/sublime-text-remember-cursor-position-plugin", "published_at": "2022-03-17T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827ab2fa6f", "title": "New Pelican website", "url": "https://gmpy.dev/blog/2020/new-pelican-website", "published_at": "2020-06-25T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827b229bfe", "title": "System load average on Windows in Python", "url": "https://gmpy.dev/blog/2019/system-load-average-on-windows-in-python", "published_at": "2019-05-28T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827bc3940f", "title": "Announcing psutil 5.6.0", "url": "https://gmpy.dev/blog/2019/psutil-560-and-process-parents", "published_at": "2019-03-04T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827cb60d92", "title": "Removing Process.memory_maps() on macOS", "url": "https://gmpy.dev/blog/2019/removing-processmemory_maps-on-macos", "published_at": "2019-03-04T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827d7a538a", "title": "AIX support", "url": "https://gmpy.dev/blog/2017/psutil-540-and-aix-support", "published_at": "2017-10-11T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827dafb4bb", "title": "Announcing psutil 5.3.0", "url": "https://gmpy.dev/blog/2017/announcing-psutil-530", "published_at": "2017-09-02T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827e306f79", "title": "Fixing Unicode across Python 2 and 3", "url": "https://gmpy.dev/blog/2017/fixing-unicode-in-psutil-across-python-2-and-3", "published_at": "2017-09-02T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827e6f06fa", "title": "Improved process_iter()", "url": "https://gmpy.dev/blog/2017/improved-process_iter", "published_at": "2017-09-02T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30827f60b71a", "title": "Sensors: temperatures, battery, CPU frequency", "url": "https://gmpy.dev/blog/2017/psutil-510-sensors-temperatures-battery-and-cpu-frequency", "published_at": "2017-01-31T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-3082804893d0", "title": "Making psutil twice as fast", "url": "https://gmpy.dev/blog/2016/psutil-550-is-twice-as-fast", "published_at": "2016-11-05T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308280cce0df", "title": "Improved Linux memory metrics", "url": "https://gmpy.dev/blog/2016/psutil-440-improved-linux-memory-metrics", "published_at": "2016-10-22T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308280d51820", "title": "Windows services support", "url": "https://gmpy.dev/blog/2016/psutil-420-windows-services-in-python", "published_at": "2016-05-14T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308281127302", "title": "NetBSD support", "url": "https://gmpy.dev/blog/2016/psutil-netbsd-support", "published_at": "2016-02-24T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30828181ee91", "title": "Real process memory and environ in Python", "url": "https://gmpy.dev/blog/2016/real-process-memory-and-environ-in-python", "published_at": "2016-02-16T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308281929792", "title": "How to always execute exit functions in Python", "url": "https://gmpy.dev/blog/2016/how-to-always-execute-exit-functions-in-python", "published_at": "2016-02-11T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-3082827cd279", "title": "OpenBSD support", "url": "https://gmpy.dev/blog/2015/psutil-openbsd-support", "published_at": "2015-11-24T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308282bed00a", "title": "Reimplementing ifconfig in Python", "url": "https://gmpy.dev/blog/2015/psutil-30-reimplement-ifconfig-in-python", "published_at": "2015-06-12T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30828336a1d0", "title": "Proper zombie process handling", "url": "https://gmpy.dev/blog/2015/zombie-processes", "published_at": "2015-06-12T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-3082840a9cc1", "title": "Windows wheels available in psutil 2.1.2", "url": "https://gmpy.dev/blog/2014/windows-wheels-available-in-psutil-212", "published_at": "2014-09-20T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308284612d45", "title": "Python and sendfile", "url": "https://gmpy.dev/blog/2014/python-and-sendfile", "published_at": "2014-06-12T22:00:00+00:00" }, { "id": "01a0877d-af11-7199-b90c-a4256a7c1ad3", "title": "Goodbye Google Code, I am moving to GitHub", "url": "https://gmpy.dev/blog/2014/goodbye-google-code-i-am-moving-to-github", "published_at": "2014-05-25T22:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308284e09e56", "title": "Announcing psutil 2.0", "url": "https://gmpy.dev/blog/2014/psutil-20", "published_at": "2014-03-09T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308285cfb5ed", "title": "Reimplementing netstat in Python", "url": "https://gmpy.dev/blog/2014/reimplementing-netstat-in-python", "published_at": "2014-03-09T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-30828674a6a4", "title": "Porting your code to psutil 2.0", "url": "https://gmpy.dev/blog/2014/psutil-20-api-redesign", "published_at": "2014-01-10T23:00:00+00:00" }, { "id": "01a0821c-6684-700e-ad03-308286f355a2", "title": "Making constants part of your API is evil", "url": "https://gmpy.dev/blog/2013/making-constants-part-of-your-api-is-evil", "published_at": "2013-12-20T23:00:00+00:00" } ] posts Claim your blog
Back to Giampaolo Rodola
Blog · corpus.blog/blogs/gmpy.dev/posts

Giampaolo Rodola

gmpy.dev

2026

2025

2023

2022

2020

2019

2017

2016

2015

2014

2013