Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[PyCon KR 2018] Making asyncio on our own

[PyCon KR 2018] Making asyncio on our own

Ed7b6f41ac2581f1be3fd9b5bc883875?s=128

Joongi Kim

August 17, 2018
Tweet

Transcript

  1. Making asyncio on our own! Joongi Kim () Lablup /

    KossLab
  2. Outline §    §   asyncio 

    async/await   §   : sleep  § Summary & Homework PyCon KR 2018
  3.    Live Coding PyCon KR 2018

  4. async/await  Live Coding PyCon KR 2018

  5. async/await  § PEP-380:      

     • yield from   : generator   generator •  caller   ! "(=generator)      ! " yield#    $  PyCon KR 2018
  6. async/await  § PEP-492 : async await   

    • yield from2 generator :4  – yield @04 <9,  def4 4  (func. vs generator) • yield from3  await  * 5 DI , >5:2... – async def (,  await /C ; : '%  # $ – await GJ= )2 async J% !+  : 6BE5& 7# L • async for, async with- 2 FI 7# 8 "A ? • LN async generator M3 1K yield @04  H.# PyCon KR 2018
  7.  : sleep  Live Coding PyCon KR 2018

  8. Hints § "async_sleep"       

      §   expire sleep ! task  •  %  )   "· !*  ? • ' $  &(/#  ) ? § select   timeout  " PyCon KR 2018
  9. Summary PyCon KR 2018

  10. Summary § asyncio    ! • ' +

    /2! 7 Future , yield4,  Future ,   8 4  1 3: –  await ;.,%#  7 Can , yield6 •  1  /2"  *90 ! - caller, ) event loop# 5 – # run() 6 8 • $ 8 event loop future" "book-keeping"8 6 – # WAIT_* &( 8 PyCon KR 2018
  11. Summary • asyncio.Future –   Can   

    • asyncio.Task –   Task   • asyncio.BaseEventLoop –      § curio, trio    I/O      ! PyCon KR 2018
  12. Homework § select *'$  selectors *'$ , . •

    kqueue / epoll !& % "  • select   kqueue / epoll / IOCP %   &% § Future "(+!  Can/Task . §  $  Can/Task - cancel!  , . • Cancellation $' :   vs. generator.close() § trio/curio )#  %!# & § Javascript async/await,  $ & •  generator vs. #  Promise PyCon KR 2018
  13. Thanks! PyCon KR 2018

  14. Reference § PEP 342 – Coroutines via Enhanced Generators §

    PEP 380 – Syntax for Delegating to a Subgenerator § PEP 492 – Coroutines with async and await syntax § PEP-3156 – Asynchronous IO Support Rebooted: the "asyncio" Module § Jonas Obrist's "Artisanal Asyncio Adventures" Talks § CPython's asyncio module source code on GitHub § curio (https://github.com/dabeaz/curio) § trio (https://github.com/python-trio/trio) PyCon KR 2018