GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GH-117727: Speed up `pathlib.Path.iterdir()` by using `os.scandir()` by barneygale · Pull Request #117728 · python/cpython

Conversation

@barneygale

@barneygale barneygale commented Apr 10, 2024 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Replace use of os.listdir() with os.scandir(). Forgo setting _drv, _root and _tail_cached, as these usually aren't needed. Use os.DirEntry.path to set _str.

Timing:

$ ./python -m timeit -s "from pathlib import Path; p = Path('Lib')" "list(p.iterdir())"
1000 loops, best of 5: 303 usec per loop  # before
1000 loops, best of 5: 257 usec per loop  # after
# --> 1.18x faster
  • Issue: Speed up pathlib.Path.iterdir() by using os.scandir() #117727

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@barneygale
pythonGH-117727: Speed up pathlib.Path.iterdir() by using `os.scand…
84534f9
…ir()`

Replace use of `os.listdir()` with `os.scandir()`. Forgo setting `_drv`,
`_root` and `_tail_cached`, as these usually aren't needed. Use
`os.DirEntry.path` to set `_str`.
@barneygale barneygale added performance Performance or resource usage topic-pathlib labels Apr 10, 2024
@bedevere-app bedevere-app Bot added the awaiting core review label Apr 10, 2024
@bedevere-app bedevere-app Bot mentioned this pull request Apr 10, 2024
Speed up pathlib.Path.iterdir() by using os.scandir() #117727
Closed
eryksun
eryksun reviewed Apr 10, 2024
View reviewed changes
Comment thread Lib/pathlib/__init__.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

barneygale added 3 commits April 11, 2024 01:27
@barneygale
Merge branch 'main' into iterdir-scandir
fbe636c
@barneygale
Merge branch 'main' into iterdir-scandir
81cd7c6
@barneygale
Remove errant newline
8bec7c8
@barneygale
barneygale enabled auto-merge (squash) April 12, 2024 21:29
@barneygale
barneygale merged commit 30f0643 into python:main Apr 12, 2024
@bedevere-app bedevere-app Bot removed the awaiting core review label Apr 12, 2024
diegorusso pushed a commit to diegorusso/cpython that referenced this pull request Apr 17, 2024
@barneygale @diegorusso
pythonGH-117727: Speed up pathlib.Path.iterdir() by using `os.scand…
cd462e6
…ir()` (python#117728)

Replace use of `os.listdir()` with `os.scandir()`. Forgo setting `_drv`,
`_root` and `_tail_cached`, as these usually aren't needed. Use
`os.DirEntry.path` to set `_str`.
@emmatyping emmatyping mentioned this pull request Jun 28, 2025
pathlib: Path.iterdir() is surprisingly not streaming #136059
Open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@eryksun eryksun eryksun left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

performance Performance or resource usage topic-pathlib

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@barneygale @eryksun
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.