Learn Python's AsyncIO in 15 minutes

Поділитися
Вставка
  • Опубліковано 22 сер 2024
  • In this tutorial we will be looking at asyncio, which is a package from the standard Python library which allows us to do asyncronous programming. It's very easy to learn, but can be a bit tricky to master. Any way, we will be covering how to use it in less than 15 minutes!
    ▶ Become job-ready with Python:
    www.indently.io
    ▶ Follow me on Instagram:
    / indentlyreels
    Documentation:
    docs.python.or...

КОМЕНТАРІ • 42

  • @WDieSmile
    @WDieSmile Рік тому +11

    Simple but most essential and elegant explanations for the asyncio. Huge thanks!

  • @eitantal726
    @eitantal726 3 місяці тому +1

    1:44 I think the point of 'await' is to let python do a context switch. Normal function call to sleep will also transfer control to the next line after the sleep is done, await doesn't affect that

  • @YoKKJoni
    @YoKKJoni 3 місяці тому +1

    11:10 the asyncio.sleep can be set to asyncio.sleep(0.0) and it will stil register
    i know its a bit late but still might be relevant..

  • @djbroake9810
    @djbroake9810 Рік тому +1

    Thanks for the content. I think there are a few ways to do this, In the example you execute the function and then append the returned data to the list, rather than appending the function call itself to a list, Here are 2 examples:
    tasks = [loop.create_task(kill_time(i)) for i in range(1, 10+1)]
    await asyncio.wait(tasks)
    for task in tasks:
    print(task.result())

    or
    list_of = []
    for i in range(1, 10+1):
    task = asyncio.create_task(kill_time(i))
    list_of.append(task)

    await asyncio.gather(*list_of)

  • @ramima6465
    @ramima6465 5 місяців тому

    The `await asyncio.sleep(0.5)` isn't needed because "the task sometimes happends so fast that task.canceled is not going to be able to register the cancel in enough time"! But it's needed because `task.cancel()` doesn't actually start the cancelation but merely schedule it for cancellation. The task will be cancelled when control returns to the event loop, which happens when an await expression is encountered.

  • @eldebtor6973
    @eldebtor6973 5 місяців тому +2

    doesnt await defeat the asynchronous behavior and make it blocking? 🤒

    • @eugenmalatov5470
      @eugenmalatov5470 4 місяці тому +2

      i think the explanation is wrong. Await starts a async coroutine, nothing to do with waiting afaik.

    • @joakker8820
      @joakker8820 Місяць тому

      If I understand correctly, if you await, the execution will continue in another coroutine, which could be the one you just created, or another

  • @grzegorzryznar5101
    @grzegorzryznar5101 Рік тому +1

    Thanks o this video I've decided to rewrite my synchronous data grabber (web scrapping and directly via API) based on requests to asyncio and aiohttp. Speedup was about ~2x :)

  • @artem_isakow
    @artem_isakow 9 місяців тому +1

    Very clear 👌

  • @hillolbro
    @hillolbro Рік тому +4

    This is arguably the best asyncio-await explanation on youtube!. thanks for keeping it simple to understand!

  • @valorantaccount462
    @valorantaccount462 Рік тому +1

    thanks really understood the concept.

  • @cusematt23
    @cusematt23 7 місяців тому

    I think this video is great. Very clear.

  • @vnikolayev
    @vnikolayev Рік тому +1

    Great video, thanks!

  • @umbertoarreghini9307
    @umbertoarreghini9307 Рік тому +1

    👏Clear and concise

  • @emailvinz
    @emailvinz 7 місяців тому

    Very clear, thank you very much !

  • @supundasanthakuruppu3496
    @supundasanthakuruppu3496 8 місяців тому

    This was very helpful. Thank you.

  • @alexiswiftrock
    @alexiswiftrock Рік тому +1

    Thanks for this exposition 👍

  • @Arocksy
    @Arocksy Рік тому +2

    Thanks for a simple explanation!

  • @bogdanvelica
    @bogdanvelica Рік тому

    For a noob like me this was awesome! Thank you

  • @kovi5758
    @kovi5758 Рік тому +1

    Awesome vid; glad I stumbled upon this! Much cleaner than threading/mp libraries, so I want to learn this one! Why does main have to be async def main and not just def main? Also, does that mean that any functions I use in the async module must have with the async keyword in the definition?

  • @skyisthelimpet
    @skyisthelimpet Рік тому

    Thanks for the explanation

  • @blizzred2143
    @blizzred2143 7 місяців тому

    Can I use this to constantly check if a program is running, then make an if statement saying if the program is not running open a file and if it’s already running print the name of the current file it’s running? I’m trying to make this but with a start and stop button…

  • @pennystriker
    @pennystriker Рік тому

    Your voice & accent sounds a lot like Naval Ravikant
    😃

  • @findritesh
    @findritesh Рік тому

    great tutorial!

  • @gamingland2074
    @gamingland2074 2 роки тому +1

    are u using python 3.10?? bcs some function has depreced

  • @hughdunc
    @hughdunc Рік тому +1

    6:57 No.
    Use list_of_tasks = [kill_time(i) for i in range(1000)]

    • @Slay_and_Play
      @Slay_and_Play Рік тому

      Why do you need list comprehension versus what he had?

  • @abtheminecraft
    @abtheminecraft Рік тому

    @7:15 isnt the function kill_time() already called before you do await.gather()

    • @e_a_r_t_h_m_a_n
      @e_a_r_t_h_m_a_n 7 місяців тому

      coroutines (any function with `yield` or `await` inside) should be `extracted` from a function first by a call syntax. But this call is not a call, it just returns a `coroutine` object.

  • @sc0820
    @sc0820 Рік тому

    very nice

  • @tonik04
    @tonik04 Рік тому

    Nice explanation, very helpfull for me. A huge thanks !!

  • @TojikCZ
    @TojikCZ Рік тому

    11:15 I am strongly against waiting like that. I would loop or create something awaitable instead, but I want to learn it, and you giving me an anti-pattern like that makes me question the usefulness of the rest :/

    • @Indently
      @Indently  Рік тому +1

      You can be strongly against whatever you want. The sleep can also be set to 0 if you want, but you need to provide your script some context to be able to perform a switch or it never will.

  • @compscif5032
    @compscif5032 2 роки тому +1

    Can you please provide source code for these videos

    • @Indently
      @Indently  2 роки тому

      I don’t have source code for these videos

    • @__lasevix_
      @__lasevix_ 2 роки тому

      @@Indently you delete all the example files after writing ?

    • @Indently
      @Indently  2 роки тому

      @@__lasevix_ Yeah, I don't share source code in general for non-project videos

    • @alexiswiftrock
      @alexiswiftrock Рік тому +2

      Just follow along in practice. Not everything has to be a handout.

  • @trzztrzz2477
    @trzztrzz2477 9 місяців тому

    fuoco frigiteli y adizo

  • @Alex-bw8wr
    @Alex-bw8wr Рік тому +4

    Not super useful 😢

    • @Indently
      @Indently  Рік тому +6

      Thank you for the useful comment 😉