psutil v5.8.1 Release Notes

  • XXXX-XX-XX

    โœจ Enhancements

    • ๐Ÿง 1851_: [Linux] cpu_freq() is slow on systems with many CPUs. Read current frequency values for all CPUs from /proc/cpuinfo instead of opening many files in /sys fs. (patch by marxin)
    • 1992_: NoSuchProcess message now specifies if the PID has been reused.
    • ๐Ÿ‘ 1992_: error classes (NoSuchProcess, AccessDenied, etc.) now have a better formatted and separated __repr__ and __str__ implementations.
    • ๐Ÿ‘ 1996_: add support for MidnightBSD. (patch by Saeed Rasooli)
    • ๐Ÿง 1999_: [Linux] disk_partitions(): convert "/dev/root" device (an alias used on some Linux distros) to real root device path.
    • 2005_: PSUTIL_DEBUG mode now prints file name and line number of the debug messages coming from C extension modules.

    ๐Ÿ› Bug fixes

    • ๐ŸŽ 1456_: [macOS] psutil.cpu_freq()'s min and max are set to 0 if can't be determined (instead of crashing).
    • ๐ŸŽ 1512_: [macOS] sometimes Process.connections() will crash with EOPNOTSUPP for one connection; this is now ignored.
    • ๐Ÿ 1598_: [Windows] psutil.disk_partitions() only returns mountpoints on drives where it first finds one
    • 1874_: [Solaris] swap output error due to incorrect range.
    • ๐ŸŽ 1892_: [macOS] psutil.cpu_freq() broken on Apple M1.
    • ๐ŸŽ 1901_: [macOS] different functions, especially process' open_files() and connections() methods, could randomly raise AccessDenied because the internal buffer of proc_pidinfo(PROC_PIDLISTFDS) syscall was not big enough. We now dynamically increase the buffer size until it's big enough instead of giving up and raising AccessDenied, which was a fallback to avoid crashing.
    • ๐Ÿ 1904_: [Windows] OpenProcess fails with ERROR_SUCCESS due to GetLastError() called after sprintf(). (patch by alxchk)
    • ๐Ÿง 1913_: [Linux] wait_procs seemingly ignoring timeout, TimeoutExpired thrown
    • ๐Ÿง 1919_: [Linux] sensors_battery() can raise TypeError on PureOS.
    • ๐Ÿ 1921_: [Windows] psutil.swap_memory() shows committed memory instead of swap
    • ๐Ÿง 1940_: [Linux] psutil does not handle ENAMETOOLONG when accessing process file descriptors in procfs. (patch by Nikita Radchenko)
    • 1948_: Process' memoize_when_activated decorator was not thread-safe. (patch by Xuehai Pan)
    • ๐Ÿ 1953_: [Windows] disk_partitions() crashes due to insufficient buffer len. (patch by MaWe2019)
    • ๐Ÿ 1965_: [Windows] fix "Fatal Python error: deallocating None" when calling psutil.users() multiple times.
    • ๐Ÿ 1980_: [Windows] 32bit / WOW64 processes fails to read process name longer than 128 characters resulting in AccessDenied. This is now fixed. (patch by PetrPospisil)
    • 1991_: process_iter() can raise TypeError if invoked from multiple threads (not thread-safe).