Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #75128
| 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 | Next — Next in thread | Find similar | Unroll 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