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.
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)
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
Is that how it works in python? In languages like JS, Dart or C# not awaiting an async function is just basically a fire and forget approach, the thread gets spun off to do its thing and the next line executes immediately
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…
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.
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 :)
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?
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 :/
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.
Simple but most essential and elegant explanations for the asyncio. Huge thanks!
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.
Great tutorial, it helps a lot, thank you so much for sharing it, keep posting these wonderful videos!🥰
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..
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)
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
Is that how it works in python? In languages like JS, Dart or C# not awaiting an async function is just basically a fire and forget approach, the thread gets spun off to do its thing and the next line executes immediately
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…
doesnt await defeat the asynchronous behavior and make it blocking? 🤒
i think the explanation is wrong. Await starts a async coroutine, nothing to do with waiting afaik.
If I understand correctly, if you await, the execution will continue in another coroutine, which could be the one you just created, or another
I have seen your face first time in this video. I didn't know, you are that cute from voice. Love your tutorials.
I think this video is great. Very clear.
This is arguably the best asyncio-await explanation on youtube!. thanks for keeping it simple to understand!
@7:15 isnt the function kill_time() already called before you do await.gather()
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.
Very clear 👌
are u using python 3.10?? bcs some function has depreced
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 :)
👏Clear and concise
Great video, thanks!
This was very helpful. Thank you.
thanks really understood the concept.
Thanks for this exposition 👍
Thanks for a simple explanation!
great tutorial!
For a noob like me this was awesome! Thank you
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?
Thanks for the explanation
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 :/
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.
Nice explanation, very helpfull for me. A huge thanks !!
6:57 No.
Use list_of_tasks = [kill_time(i) for i in range(1000)]
Why do you need list comprehension versus what he had?
Can you please provide source code for these videos
I don’t have source code for these videos
@@Indently you delete all the example files after writing ?
@@__lasevix_ Yeah, I don't share source code in general for non-project videos
Just follow along in practice. Not everything has to be a handout.
Your voice & accent sounds a lot like Naval Ravikant
😃
very nice
fuoco frigiteli y adizo
Not super useful 😢
Thank you for the useful comment 😉