From 37f2034802c52f9a502a804246f00f4f2bffa72f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 10 Mar 2015 13:29:41 +0100 Subject: [PATCH] Issue #22524: Rephrase scandir addition in What's New in Python 3.5 Patch written by Ben Hoyt. --- Doc/whatsnew/3.5.rst | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst index 6932fcb866b..33e6011503b 100644 --- a/Doc/whatsnew/3.5.rst +++ b/Doc/whatsnew/3.5.rst @@ -115,13 +115,17 @@ Please read on for a comprehensive list of user-facing changes. 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 @@ PEP 475: Retry system calls failing with EINTR 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 @@ json 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 @@ Optimizations 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.