Back at it again
parent
762804fb70
commit
a36d3b86f8
@ -0,0 +1,3 @@
|
||||
# Asyncio in python3
|
||||
|
||||
The example here primarily come from the Asyncio in Python3 book by Caleb Hattingh.
|
@ -0,0 +1,36 @@
|
||||
import asyncio
|
||||
import time
|
||||
|
||||
|
||||
async def main():
|
||||
print(f"{time.ctime()} Hello!")
|
||||
await asyncio.sleep(1.0)
|
||||
print(f"{time.ctime()} Goodbye!")
|
||||
loop.stop()
|
||||
|
||||
|
||||
def blocking():
|
||||
# This code only works because our blocking sleep is less than the main functions Asyncio sleep call. If
|
||||
# this function used here was time.sleep(2) then we would get a RuntimeError because the eventloop was
|
||||
# Already closed when the Future's job completed
|
||||
time.sleep(0.5)
|
||||
print(f"{time.ctime()} Hello from thread!")
|
||||
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
loop.create_task(main())
|
||||
# Returns a asyncio Future not a asyncio Task
|
||||
loop.run_in_executor(None, blocking)
|
||||
|
||||
loop.run_forever()
|
||||
|
||||
# Deprecated Style
|
||||
# pending = asyncio.Task.all_tasks(loop=loop)
|
||||
pending = asyncio.all_tasks(loop=loop)
|
||||
|
||||
# asyncio.gather also returns a future
|
||||
group = asyncio.gather(*pending)
|
||||
print(f"The type returned of asyncio.gather is: {type(group)}")
|
||||
loop.run_until_complete(group)
|
||||
loop.close()
|
@ -0,0 +1,5 @@
|
||||
# Readme
|
||||
|
||||
I don't know where this content came from. It was 4 years old when I last committed it. Might have
|
||||
been from the Fluent Python book.
|
||||
|
Loading…
Reference in New Issue