[Python-ideas] Async API: some code to review

Steve Dower Steve.Dower at microsoft.com
Tue Oct 30 00:00:14 CET 2012


Rene Nejsum wrote:
>> [SNIP]
>> 
>> That's what bothers me is well.  'yield from' looks too long for a 
>> simple thing it does (1); users will be confused whether they should 
>> use 'yield' or 'yield from' (2); there is no visible difference 
>> between a plain generator and a coroutine (3).
>
> I agree, was this ever commented ? I know it maybe late in the discussion
> but just because you can use yield/yield from for concurrent stuff, should you?
>
> it looks very implicit to me (breaking the second rule)
>
> Have the delegate/event model of C# been discussed ?
>
> As always i recommend moving the concurrent stuff to the object level, it
> would be so much easier to state that a message for an object is just that:
> An async message sent from one object to another... :-) A simple decorator
> like @task would be enough:
>
> @task # explicit run instance in own thread/coroutine class SomeTask(object):
>   def asyc_add(self, x, y)
>     return x + y # returns a Future() with result
>
> task = SomeTask()
> n = task.async_add(2,2)
> # Do other stuff while waiting for answer print( "result is %d" % n ) # Future will
> wait/hang until result is ready

I think you'll like what I'll be sending out later tonight (US Pacific time), so hold on :) (In the meantime, feel free to read up on C#'s async/await model, which is very similar to what both Guido and I are proposing and has already been pretty well received.)

Cheers,
Steve



More information about the Python-ideas mailing list