Changelog History
Page 7
-
v2.1.3 Changes
2014-09-26
- ๐ง 536_, [Linux], [critical]: fix "undefined symbol: CPU_ALLOC" compilation error.
-
v2.1.2 Changes
2014-09-21
โจ Enhancements
- ๐ 407_: project moved from Google Code to Github; code moved from Mercurial to Git.
- โ
492_: use
tox
to run tests on multiple Python versions. (patch by msabramo) - ๐ 505_, [Windows]: distribution as wheel packages.
- 511_: add
ps.py
_ script.
๐ Bug fixes
- ๐ 340_, [Windows]:
Process.open_files()
_ no longer hangs. (patch by Jeff Tang) - ๐ 501_, [Windows]:
disk_io_counters()
_ may return negative values. - ๐ง 503_, [Linux]: in rare conditions
Process.exe()
,Process.open_files()
andProcess.connections()
_ can raiseOSError(ESRCH)
instead ofNoSuchProcess
_. - ๐ง 504_, [Linux]: can't build RPM packages via setup.py
- ๐ง 506_, [Linux], [critical]: Python 2.4 support was broken.
- ๐ง 522_, [Linux]:
Process.cpu_affinity()
_ might returnEINVAL
. (patch by David Daeschler) - ๐ 529_, [Windows]:
Process.exe()
_ may raise unhandledWindowsError
exception for PIDs 0 and 4. (patch by Jeff Tang) - ๐ง 530_, [Linux]:
disk_io_counters()
_ may crash on old Linux distros (< 2.6.5) (patch by Yaolong Huang) - ๐ง 533_, [Linux]:
Process.memory_maps()
_ may raiseTypeError
on old Linux distros.
-
v2.1.1 Changes
2014-04-30
๐ Bug fixes
- ๐ 446_, [Windows]: fix encoding error when using
net_io_counters()
_ on Python 3. (patch by Szigeti Gabor Niif) - ๐ 460_, [Windows]:
net_io_counters()
_ wraps after 4G. - ๐ง 491_, [Linux]:
net_connections()
_ exceptions. (patch by Alexander Grothe)
- ๐ 446_, [Windows]: fix encoding error when using
-
v2.1.0 Changes
2014-04-08
โจ Enhancements
- 387_: system-wide open connections a-la
netstat
(addnet_connections()
_).
๐ Bug fixes
- 421_, [SunOS], [critical]: psutil does not compile on SunOS 5.10. (patch by Naveed Roudsari)
- ๐ง 489_, [Linux]:
disk_partitions()
_ return an empty list.
- 387_: system-wide open connections a-la
-
v2.0.0 Changes
2014-03-10
โจ Enhancements
- ๐ 424_, [Windows]: installer for Python 3.X 64 bit.
- 427_: number of logical CPUs and physical cores (
cpu_count()
_). - 447_:
wait_procs()
_timeout
parameter is now optional. - 452_: make
Process
_ instances hashable and usable withset()
s. - โ
453_: tests on Python < 2.7 require
unittest2
module. - โ 459_: add a Makefile for running tests and other repetitive tasks (also on Windows).
- โฑ 463_: make timeout parameter of
cpu_percent*
functions default to0.0
'cause it's a common trap to introduce slowdowns. - ๐ 468_: move documentation to readthedocs.com.
- 477_:
Process.cpu_percent()
_ is about 30% faster. (suggested by crusaderky) - ๐ง 478_, [Linux]: almost all APIs are about 30% faster on Python 3.X.
- ๐ 479_: long deprecated
psutil.error
module is gone; exception classes now live in psutil namespace only.
๐ Bug fixes
- 193_:
psutil.Popen
_ constructor can throw an exception if the spawned process terminates quickly. - ๐ 340_, [Windows]:
Process.open_files()
_ no longer hangs. (patch by [email protected]) - ๐ง 443_, [Linux]: fix a potential overflow issue for
Process.cpu_affinity()
_ (set) on systems with more than 64 CPUs. - ๐ 448_, [Windows]:
Process.children()
_ andProcess.ppid()
_ memory leak (patch by Ulrich Klank). - 457_, [POSIX]:
pid_exists()
_ always returnsTrue
for PID 0. - 461_: namedtuples are not pickle-able.
- ๐ง 466_, [Linux]:
Process.exe()
_ improper null bytes handling. (patch by Gautam Singh) - 470_:
wait_procs()
_ might not wait. (patch by crusaderky) - ๐ 471_, [Windows]:
Process.exe()
_ improper unicode handling. (patch by [email protected]) - 473_:
psutil.Popen
_wait()
method does not set returncode attribute. - ๐ 474_, [Windows]:
Process.cpu_percent()
_ is no longer capped at 100%. - ๐ง 476_, [Linux]: encoding error for
Process.name()
_ andProcess.cmdline()
_.
API changes
For the sake of consistency a lot of psutil APIs have been renamed. In most cases accessing the old names will work but it will cause a ๐
DeprecationWarning
.psutil.*
module level constants have being replaced by functions:
+-----------------------+----------------------------------+ | Old name | Replacement | +=======================+==================================+ | psutil.NUM_CPUS | psutil.cpu_count() | +-----------------------+----------------------------------+ | psutil.BOOT_TIME | psutil.boot_time() | +-----------------------+----------------------------------+ | psutil.TOTAL_PHYMEM | virtual_memory.total | +-----------------------+----------------------------------+
- ๐ Renamed
psutil.*
functions:
+------------------------+-------------------------------+ | Old name | Replacement | +========================+===============================+ | psutil.get_pid_list() | psutil.pids() | +------------------------+-------------------------------+ | psutil.get_users() | psutil.users() | +------------------------+-------------------------------+ | psutil.get_boot_time() | psutil.boot_time() | +------------------------+-------------------------------+
- All
Process
_get_*
methods lost theget_
prefix. E.g.get_ext_memory_info()
was renamed tomemory_info_ex()
. Assumingp = psutil.Process()
:
+--------------------------+----------------------+ | Old name | Replacement | +==========================+======================+ | p.get_children() | p.children() | +--------------------------+----------------------+ | p.get_connections() | p.connections() | +--------------------------+----------------------+ | p.get_cpu_affinity() | p.cpu_affinity() | +--------------------------+----------------------+ | p.get_cpu_percent() | p.cpu_percent() | +--------------------------+----------------------+ | p.get_cpu_times() | p.cpu_times() | +--------------------------+----------------------+ | p.get_ext_memory_info() | p.memory_info_ex() | +--------------------------+----------------------+ | p.get_io_counters() | p.io_counters() | +--------------------------+----------------------+ | p.get_ionice() | p.ionice() | +--------------------------+----------------------+ | p.get_memory_info() | p.memory_info() | +--------------------------+----------------------+ | p.get_memory_maps() | p.memory_maps() | +--------------------------+----------------------+ | p.get_memory_percent() | p.memory_percent() | +--------------------------+----------------------+ | p.get_nice() | p.nice() | +--------------------------+----------------------+ | p.get_num_ctx_switches() | p.num_ctx_switches() | +--------------------------+----------------------+ | p.get_num_fds() | p.num_fds() | +--------------------------+----------------------+ | p.get_num_threads() | p.num_threads() | +--------------------------+----------------------+ | p.get_open_files() | p.open_files() | +--------------------------+----------------------+ | p.get_rlimit() | p.rlimit() | +--------------------------+----------------------+ | p.get_threads() | p.threads() | +--------------------------+----------------------+ | p.getcwd() | p.cwd() | +--------------------------+----------------------+
- All
Process
_set_*
methods lost theset_
prefix. Assumingp = psutil.Process()
:
+----------------------+---------------------------------+ | Old name | Replacement | +======================+=================================+ | p.set_nice() | p.nice(value) | +----------------------+---------------------------------+ | p.set_ionice() | p.ionice(ioclass, value=None) | +----------------------+---------------------------------+ | p.set_cpu_affinity() | p.cpu_affinity(cpus) | +----------------------+---------------------------------+ | p.set_rlimit() | p.rlimit(resource, limits=None) | +----------------------+---------------------------------+
- Except for
pid
, allProcess
_ class properties have been turned into methods. This is the only case which there are no aliases. Assumingp = psutil.Process()
:
+---------------+-----------------+ | Old name | Replacement | +===============+=================+ | p.name | p.name() | +---------------+-----------------+ | p.parent | p.parent() | +---------------+-----------------+ | p.ppid | p.ppid() | +---------------+-----------------+ | p.exe | p.exe() | +---------------+-----------------+ | p.cmdline | p.cmdline() | +---------------+-----------------+ | p.status | p.status() | +---------------+-----------------+ | p.uids | p.uids() | +---------------+-----------------+ | p.gids | p.gids() | +---------------+-----------------+ | p.username | p.username() | +---------------+-----------------+ | p.create_time | p.create_time() | +---------------+-----------------+
- timeout parameter of
cpu_percent*
functions defaults to 0.0 instead of 0.1. - ๐ long deprecated
psutil.error
module is gone; exception classes now live in "psutil" namespace only. Process
_ instances'retcode
attribute returned bywait_procs()
_ has been renamed toreturncode
for consistency withsubprocess.Popen
.
-
v1.2.1 Changes
2013-11-25
๐ Bug fixes
- ๐ 348_, [Windows], [critical]: fixed "ImportError: DLL load failed" occurring on module import on Windows XP.
- 425_, [SunOS], [critical]: crash on import due to failure at determining
BOOT_TIME
. - ๐ง 443_, [Linux]:
Process.cpu_affinity()
_ can't set affinity on systems with more than 64 cores.
-
v1.2.0 Changes
2013-11-20
โจ Enhancements
- 439_: assume
os.getpid()
if no argument is passed toProcess
_ class constructor. - 440_: new
wait_procs()
_ utility function which waits for multiple processes to terminate.
๐ Bug fixes
- ๐ 348_, [Windows]: fix "ImportError: DLL load failed" occurring on module import on Windows XP / Vista.
- 439_: assume
-
v1.1.3 Changes
2013-11-07
๐ Bug fixes
- ๐ง 442_, [Linux], [critical]: psutil won't compile on certain version of
Linux because of missing
prlimit(2)
syscall.
- ๐ง 442_, [Linux], [critical]: psutil won't compile on certain version of
Linux because of missing
-
v1.1.2 Changes
2013-10-22
๐ Bug fixes
- ๐ง 442_, [Linux], [critical]: psutil won't compile on Debian 6.0 because of
missing
prlimit(2)
syscall.
- ๐ง 442_, [Linux], [critical]: psutil won't compile on Debian 6.0 because of
missing
-
v1.1.1 Changes
2013-10-08
๐ Bug fixes
- ๐ง 442_, [Linux], [critical]: psutil won't compile on kernels < 2.6.36 due
to missing
prlimit(2)
syscall.
- ๐ง 442_, [Linux], [critical]: psutil won't compile on kernels < 2.6.36 due
to missing