[Python-checkins] cpython: Issue #22524: Rephrase scandir addition in What's New in Python 3.5

victor.stinner python-checkins at python.org
Tue Mar 10 13:29:51 CET 2015


https://hg.python.org/cpython/rev/8d76dabd40f6
changeset:   94923:8d76dabd40f6
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Tue Mar 10 13:29:41 2015 +0100
summary:
  Issue #22524: Rephrase scandir addition in What's New in Python 3.5

Patch written by Ben Hoyt.

files:
  Doc/whatsnew/3.5.rst |  26 ++++++++++++++++++--------
  1 files changed, 18 insertions(+), 8 deletions(-)


diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -115,13 +115,17 @@
 PEP 471 - os.scandir() function -- a better and faster directory iterator
 -------------------------------------------------------------------------
 
-:pep:`471`  includes a new directory iteration function, :func:`os.scandir`,
-in the standard library.
+:pep:`471` adds a new directory iteration function, :func:`os.scandir`,
+to the standard library. Additionally, :func:`os.walk` is now
+implemented using :func:`os.scandir`, which speeds it up by 3-5 times
+on POSIX systems and by 7-20 times on Windows systems.
+
+PEP and implementation written by Ben Hoyt with the help of Victor Stinner.
 
 .. seealso::
 
    :pep:`471` -- os.scandir() function -- a better and faster directory
-   iterator.
+   iterator
 
 
 PEP 475: Retry system calls failing with EINTR
@@ -131,8 +135,6 @@
 this means that user code doesn't have to deal with EINTR or InterruptedError
 manually, and should make it more robust against asynchronous signal reception.
 
-PEP and implementation written by Ben Hoyt with the help of Victor Stinner.
-
 .. seealso::
 
    :pep:`475` -- Retry system calls failing with EINTR
@@ -294,9 +296,11 @@
 os
 --
 
-* New :func:`os.scandir` function: Return an iterator of :class:`os.DirEntry`
-  objects corresponding to the entries in the directory given by *path*.
-  (Implementation written by Ben Hoyt with the help of Victor Stinner.)
+* New :func:`os.scandir` function that exposes file information from
+  the operating system when listing a directory. :func:`os.scandir`
+  returns an iterator of :class:`os.DirEntry` objects corresponding to
+  the entries in the directory given by *path*. (Contributed by Ben
+  Hoyt with the help of Victor Stinner in :issue:`22524`.)
 
 * :class:`os.stat_result` now has a :attr:`~os.stat_result.st_file_attributes`
   attribute on Windows.  (Contributed by Ben Hoyt in :issue:`21719`.)
@@ -419,6 +423,12 @@
 
 The following performance enhancements have been added:
 
+* :func:`os.walk` has been sped up by 3-5x on POSIX systems and 7-20x
+  on Windows. This was done using the new :func:`os.scandir` function,
+  which exposes file information from the underlying ``readdir`` and
+  ``FindFirstFile``/``FindNextFile`` system calls. (Contributed by
+  Ben Hoyt with help from Victor Stinner in :issue:`23605`.)
+
 * Construction of ``bytes(int)`` (filled by zero bytes) is faster and use less
   memory for large objects. ``calloc()`` is used instead of ``malloc()`` to
   allocate memory for these objects.

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list