Skip to Content
High Performance Python, 3rd Edition
book

High Performance Python, 3rd Edition

by Micha Gorelick, Ian Ozsvald
April 2025
Intermediate to advanced
524 pages
14h 43m
English
O'Reilly Media, Inc.
Content preview from High Performance Python, 3rd Edition

Chapter 5. Iterators and Generators

When many people with experience in another language start learning Python, they are taken aback by the difference in for loop notation. That is to say, instead of writing

# Other languages
for (i=0; i<N; i++) {
    do_work(i);
}

they are introduced to a new function called range:

# Python
for i in range(N):
    do_work(i)

It seems that in the Python code sample we are calling a function, range, that creates all of the data we need for the for loop to continue. Intuitively, this can be quite a time-consuming process—if we are trying to loop over the numbers 1 through 100,000,000, then we need to spend a lot of time creating that array! However, this is where generators come into play: they essentially allow us to lazily evaluate these sorts of functions so we can have the code-readability of these special-purpose functions without the performance impacts.

Note

Technically, range is a special range type and not a generator. However, it still is useful to get at the “lazy evaluation” nature of generators, especially since most uses of this range-type parallel generators. To make them exactly the same, you can run the range through the iter function to be sure that the behavior you are seeing is generator-specific ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

High Performance Python, 2nd Edition

High Performance Python, 2nd Edition

Micha Gorelick, Ian Ozsvald

Publisher Resources

ISBN: 9781098165956Errata Page