[Python-ideas] Cofunctions - Back to Basics
Nick Coghlan
ncoghlan at gmail.com
Mon Oct 31 09:15:43 CET 2011
On Mon, Oct 31, 2011 at 4:54 PM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Or maybe there's a third way:
>
> 3. Recognise that, today, some people *are* using generators
> to do coroutine-like programming and finding it a useful
> technique, despite all of its limitations, and consider
> ways to make it easier, even if we can't remove all of
> those limitations.
>
> It seems to me that the inability to suspend from within a
> special method is not likely to be a problem very often in
> practice.
Doing blocking I/O in special methods (other than __next__) is
generally a dubious practice anyway, so you're right that disallowing
suspension when such a function is on the stack is unlikely to be a
major problem.
> Inability to use generators as generators in a coroutine
> environment may be more serious, since it's quite likely
> people will want to e.g. use a for-loop to iterate over
> lines being read from a socket, and suspend while waiting
> for data to arrive.
>
> I think that particular problem could be solved, given
> some more thought. The question is, would it be worth the
> effort?
Yes, I think that one needs to be solved. The issue of providing
coroutine-friendly iterative builtins and itertools functionality also
need to be addressed.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list