[Python-ideas] Adding __getter__ to compliment __iter__.
Ron Adam
ron3200 at gmail.com
Fri Jul 19 17:58:04 CEST 2013
More information about the Python-ideas mailing list
Fri Jul 19 17:58:04 CEST 2013
- Previous message: [Python-ideas] Adding __getter__ to compliment __iter__.
- Next message: [Python-ideas] Adding __getter__ to compliment __iter__.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Jul 18, 2013 at 11:59 PM, Nick Coghlan <ncoghlan at gmail.com> wrote: > > On 19 July 2013 00:29, Ron Adam <ron3200 at gmail.com> wrote: > > I was thinking a generator would be more efficient if it's called many > > times. But I think this is easier to understand. If there is more interest > > we can test both to see how much of a difference it makes. > > Suspending and resuming a generator is quite an expensive operation. > send() has the triple whammy of method call + resume generator + > suspend generator, so it's unlikely to outperform a simple method call > (even one that redirects to another method). I thought one of the things about generators was that they didn't have to create a new frame, or store attributes. And those features would make them a bit faster than a function call. Hmmm, but that is wrapped in a method call. I did some tests with send(), and it is about 3% slower than a function call. Some of that difference is due to the loop in the generator. So it's pretty close. Could we have syntax for generators to bypass the method calls? x = gen[] # next gen[] = x # send; or "gen[] x" x = gen[]; gen[] = x # or "x = gen[] x" Currently using empty brackets like this is a syntax error. The brackets imply it is a type of iterator. Which is the most common use for generators. > Independent of performance though, I think the mutable sequence API > inspired append(), extend() and += are a better API for what you're > trying to achieve than "send", so it doesn't make sense to me to try > to shoehorn this into the generator API. I'm 50/50 on this right now. So I want to test both out in different situations. Keeping the behavior as dead simple as possible may be better because then it creates an object that would be used in a very consistent way. I think that is one of the benefits of the simple iterator design. Ron -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130719/4f9670e8/attachment-0001.html>
- Previous message: [Python-ideas] Adding __getter__ to compliment __iter__.
- Next message: [Python-ideas] Adding __getter__ to compliment __iter__.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list