Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #75128

Re: Question about asyncio doc example

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed4a.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <python-python-list@m.gmane.org>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.000
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'context': 0.07; 'socket': 0.07; 'subject:Question': 0.07; 'tkinter': 0.07; 'callback': 0.09; 'happens.': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'style.': 0.09; 'windows,': 0.09; 'wrapped': 0.09; 'def': 0.12; 'jan': 0.12; '(via': 0.16; '(without': 0.16; 'blocking': 0.16; 'clears': 0.16; 'devoid': 0.16; 'itself,': 0.16; 'loop.': 0.16; 'non-blocking': 0.16; 'operation),': 0.16; 'operation,': 0.16; 'operational': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'reedy': 0.16; 'subject:doc': 0.16; 'substitute': 0.16; 'true:': 0.16; 'wrote:': 0.18; 'bit': 0.19; 'meant': 0.20; 'seems': 0.21; '>>>': 0.22; 'code,': 0.22; 'input': 0.22; 'select': 0.22; 'example': 0.22; 'import': 0.22; 'coding': 0.22; 'header:User-Agent:1': 0.23; 'example.': 0.24; 'oriented': 0.24; 'question': 0.24; 'equivalent': 0.26; 'shown': 0.26; 'header:X -Complaints-To:1': 0.27; 'header:In-Reply-To:1': 0.27; 'function': 0.29; 'feature': 0.29; 'am,': 0.29; 'unix': 0.29; 'statement': 0.30; 'url:mailman': 0.30; 'included': 0.31; 'code': 0.31; 'getting': 0.31; 'run': 0.32; 'url:python': 0.33; "i'd": 0.34; 'something': 0.35; 'there': 0.35; 'really': 0.36; 'functions.': 0.36; 'i.e.': 0.36; 'yield': 0.36; 'url:listinfo': 0.36; 'shows': 0.36; 'hi,': 0.36; 'url:org': 0.36; 'should': 0.36; 'tasks': 0.38; 'url:library': 0.38; 'to:addr:python-list': 0.38; 'does': 0.39; 'received:71': 0.39; 'to:addr:python.org': 0.39; 'either': 0.39; 'received:org': 0.40; 'url:mail': 0.40; 'how': 0.40; 'even': 0.60; 'skip:u 10': 0.60; 'url:3': 0.61; 'real': 0.63; 'july': 0.63; 'dont': 0.67; 'believe': 0.68; 'fact,': 0.69; 'behavior': 0.77; 'examples.': 0.84; 'formulated': 0.84; 'received:fios.verizon.net': 0.84; 'streams': 0.84; 'hand,': 0.93
X-Injected-Via-Gmane http://gmane.org/
To python-list@python.org
From Terry Reedy <tjreedy@udel.edu>
Subject Re: Question about asyncio doc example
Date Thu, 24 Jul 2014 02:58:53 -0400
References <CAO3PiBgEsjvWMMqZkkOUoHmyDQr4=BtprspHj1kw7itOMiZDpw@mail.gmail.com> <lqpjnu$dun$1@ger.gmane.org> <CAO3PiBgduzC32zEvq=v+CjiWecguFuD5VyZWZCXL5PEGCnE-Xg@mail.gmail.com>
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding 7bit
X-Gmane-NNTP-Posting-Host pool-71-175-90-87.phlapa.fios.verizon.net
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
In-Reply-To <CAO3PiBgduzC32zEvq=v+CjiWecguFuD5VyZWZCXL5PEGCnE-Xg@mail.gmail.com>
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.12268.1406185154.18130.python-list@python.org> (permalink)
Lines 89
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1406185154 news.xs4all.nl 2851 [2001:888:2000:d::a6]:58991
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:75128

Show key headers only | View raw


On 7/24/2014 1:15 AM, Saimadhav Heblikar wrote:
> On 24 July 2014 05:54, Terry Reedy <tjreedy@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?

The question is not formulated very well. In asyncio parlance, 'using 
callbacks' contrasts with 'using co-routines'.  It is a coding-style 
contrast. Tkinter only has the callback style.

On the other hand, waiting (via sleep, without blocking other tasks) for 
a definite time interval contrasts with waiting (without blocking other 
tasks) until an event happens.  This is an operational contrast. Tkinter 
has both possibilities, using call_after versus event-handler 
registration.  I believe asyncio can do either type of waiting with 
either coding style.

18.5.3. Tasks and coroutines, seems to be devoid of event wait examples. 
However, there is a 'yield from' network example in 18.5.5 Streams using 
socket functions wrapped with coroutines. These should definitely be 
used instead of sleep. In fact, for cross-platform network code meant to 
run on *nix and Windows, they are better than the unix oriented select 
and poll functions.

I believe asyncio does not do key events, even though that is a form of 
unpredictable input.

-- 
Terry Jan Reedy

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Re: Question about asyncio doc example Terry Reedy <tjreedy@udel.edu> - 2014-07-24 02:58 -0400
  Re: Question about asyncio doc example Marko Rauhamaa <marko@pacujo.net> - 2014-07-24 10:23 +0300
    Re: Question about asyncio doc example Ian Kelly <ian.g.kelly@gmail.com> - 2014-07-24 10:46 -0600
      Re: Question about asyncio doc example Marko Rauhamaa <marko@pacujo.net> - 2014-07-24 20:07 +0300

csiph-web