What Bret said, here (perhaps) more concise:

async def main():
    f1 = ensure_future(say("two", 2))
    f2 = ensure_future(say("one", 1))
    # at this point both are running
    await f1
    await f2

Note that current event loop is automatic since Python 3.6; Futures are higher level abstraction, but I think it's better to start with futures :)

On Mon, 27 Aug 2018 at 5:47 PM, saurabh singh <saurabh3460@gmail.com> wrote:
my question is 1st one is concurrent but 2nd one is not, how and please correct me, what i miss and what  should i know more 
thank you

import asyncio

# 1st code 
async def say(what, when):
    await asyncio.sleep(when)
    print(what)

loop = asyncio.get_event_loop()

loop.create_task(say('first hello', 2))
loop.create_task(say('second hello', 1))

loop.run_forever()
loop.close()

'''
result 
>>> second hello
>>> first hello
'''

# 2nd code 
async def say(what, when):
await asyncio.sleep(when)
print(what)

async def main(loop):
    yield from loop.create_task(say('first hello', 2))
    yield from loop.create_task(say('second hello', 1))
    print('close')

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))
loop.close()

'''
result 
>>> first hello
>>> second hello
'''

_______________________________________________
Async-sig mailing list
Async-sig@python.org
https://mail.python.org/mailman/listinfo/async-sig
Code of Conduct: https://www.python.org/psf/codeofconduct/