Question about asyncio doc example

2014-07-23 Thread Saimadhav Heblikar
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().

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


Re: Question about asyncio doc example

2014-07-23 Thread Saimadhav Heblikar
On 24 July 2014 05:54, Terry Reedy  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