[Python-ideas] yield from multiple iterables (was Re: The async API of the future: yield-from)
Jim Jewett
jimjjewett at gmail.com
Tue Oct 23 09:17:01 CEST 2012
On 10/19/12, Guido van Rossum <guido at python.org> wrote:
> I did a basic timing test using a simple recursive function and a
> recursive PEP-380 coroutine computing the same value (see attachment).
> The coroutine version is a little over twice as slow as the function
> version. I find that acceptable. This went 20 deep, making 2 recursive
> calls at each level (except at the deepest level).
Note that the co-routine code (copied below) does not involve a
scheduler that unwraps futures; there is no scheduler, and nothing
runs concurrently.
def coroutine(n):
if n <= 0:
return 1
l = yield from coroutine(n-1)
r = yield from coroutine(n-1)
return l + 1 + r
I like the above code; my concern was that yield might get co-opted
for use with scheduler loops, which would have to track the parent
task explicitly, and prevent it from being rescheduled too early.
-jJ
More information about the Python-ideas
mailing list