On 24 July 2014 05:54, Terry Reedy <tjre...@udel.edu> wrote:
> On 7/23/2014 6:43 AM, Saimadhav Heblikar wrote:
>>
>> Hi,
>>
>> The example in question is
>>
>> https://docs.python.org/3/library/asyncio-task.html#example-hello-world-coroutine.
>> I'd like to learn the purpose of the statement
>> "yield from asyncio.sleep(2)" in that example.
>>
>> In particular, I'd like to know if asyncio.sleep() is used as a
>> substitute for slow/time consuming operation, i.e. in real code,
>> whether there will be a real time consuming statement in place of
>> asyncio.sleep().
>
>
> The context is
>     while True:
>         print('Hello')
>         yield from asyncio.sleep(3)
>
> sleep is both itself, to shown to schedule something at intervals in a
> non-blocking fashion, as well as a placefiller.  The blocking equivalent
> would use 'time' instead of 'yield from asyncio'. The following shows the
> non-blocking feature a bit better.
>
> import asyncio
>
> @asyncio.coroutine
> def hello():
>     while True:
>         print('Hello')
>         yield from asyncio.sleep(3)
>
> @asyncio.coroutine
> def goodbye():
>     while True:
>         print('Goodbye')
>         yield from asyncio.sleep(5.01)
>
> @asyncio.coroutine
> def world():
>     while True:
>         print('World')
>         yield from asyncio.sleep(2.02)
>
> loop = asyncio.get_event_loop()
> loop.run_until_complete(asyncio.wait([hello(), goodbye(), world()]))
>
> Getting the same time behavior in a while...sleep loop requires reproducing
> some of the calculation and queue manipulation included in the event loop.
>
> --
> Terry Jan Reedy
>
> --
> https://mail.python.org/mailman/listinfo/python-list

That clears it up for me. For situations where I dont really know how
long a function is going to take(say waiting for user input or a
network operation), I am better off using callbacks than "yield from
asyncio.sleep()". Is my understanding correct?



-- 
Regards
Saimadhav Heblikar
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to