On Wed, Apr 22, 2015 at 5:55 PM, Yury Selivanov <yselivanov...@gmail.com> wrote:
> On 2015-04-22 8:35 PM, Guido van Rossum wrote: > >> On Wed, Apr 22, 2015 at 5:12 PM, Greg Ewing <greg.ew...@canterbury.ac.nz> >> wrote: >> >> Guido van Rossum wrote: >>> >>> On Wed, Apr 22, > OTOH I'm still struggling with what you have to do to >>>> wrap a coroutine in a Task, the way its done in asyncio by the Task() >>>> constructor, the loop.create_task() method, and the async() function >>>> >>>> That's easy. You can always use costart() to adapt a cofunction >>> for use with something expecting a generator-based coroutine, >>> e.g. >>> >>> codef my_task_func(arg): >>> ... >>> >>> my_task = Task(costart(my_task_func, arg)) >>> >>> If you're willing to make changes, Task() et al could be made to >>> recognise cofunctions and apply costart() where needed. >>> >> >> Hm, that feels backwards incompatible (since currently I can write >> Task(my_task_func(arg)) and also a step backwards in elegance (having to >> pass the args separately). >> >> OTOH the benefit is that it's much harder to accidentally forget to wait >> for a coroutine. And maybe the backward compatibility issue is not really >> a >> problem because you have to opt in by using codef or async def. >> >> So I'm still torn. :-) >> >> Somebody would need to take a mature asyncio app and see how often this is >> used (i.e. how many place would require adding costart() as in the above >> example). >> > > Somewhere in this thread Victor Stinner wrote: > > """A huge part of the asyncio module is based on "yield from fut" where > fut is a Future object.""" > > So how would we do "await fut" if await requires parentheses? > We could make Future a valid co-callable object. > I think that the problem of forgetting 'yield from' is a bit exaggerated. > Yes, I myself forgot 'yield from' once or twice. But that's it, it has > never happened since. Maybe, but it *is* a part of everybody's learning curve. -- --Guido van Rossum (python.org/~guido)
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com