In this tutorial, you will learn exactly what Python event-driven programming means Event-driven programming is also called the Asynchronous principle, which is used in Python and many other programming languages.
Event-driven programming focuses on events they are :
- Python’s event-driven programming model resolves around the concept of event loop.
- The working of the program depends upon events happening in the program, which means that in a program when an event loop starts the events will decide in which order and what will execute in the program.
Event-Driven programming
Python Module – Asyncio:
- The main problem is that we either use parallel or serial models which take more time to execute the tasks.
- The asyncio module provides great flexibility for writing concurrent code as a single thread in a program.
Event loop:
- Event loop acts around the way during the execution of the whole program and keeps track of incoming and execution of events.
- Event loop constantly monitors the task queue and runs the task.
While executing the event loop we can use the following syntax:
- To print the text: asyncio.get_event_loop()
- To stop the loop: loop.stop()
- To return the current time to the user: time()
- Create a new event loop: new_event_loop()
- To set the current context executing from the program to loop: set_event_loop()
- To run the loop until stop() method is used we use: run_forever()
Here is an example to understand clearly:
import asyncio //import module def hello(loop): print("You are learning about Event handling in Python") loop.stop() loop = asyncio.get_event_loop() loop.call_soon(hello, loop) loop.run_forever() loop.close()
Output:
You are learning about Event handling in Python
Futures:
This is a class that represents the tasks that are not completed i.e. it allows you to track the status of asynchronous tasks.
Syntax: asyncio.Future
Example:
import asyncio async def Mycode(future): await asyncio.sleep(2) future.set_result("You are learing Futures in Python") loop = asyncio.get_event_loop() future=asyncio.Future() asyncio.ensure_future(Mycode(future)) try: loop.run_until_complete(future) print(future.result()) finally: loop.close()
Output:
You are learning Futures in Python
Coroutines:
- Coroutines are used to pause or resume which allows the nonblocking execution of code.
- We can even suspend a coroutine during program execution.
To implement the coroutines we have two ways. They are:
- async def function()
- @asyncio.coroutine decoder
1. async def function():
This method is used to implement coroutines under the asyncio module.
Example:
import asyncio async def Mycode(): print("This is a coroutine") loop = asyncio.get_event_loop() try: loop.run_until_complete(Mycode()) finally: loop.close()
Output:
This is a coroutine
2. @asyncio.coroutine decoder:
Example:
import asyncio @asyncio.coroutine def Mycode(): print("This is a coroutine") loop=asyncio.get_event_loop() try: loop.run_until_complete(Mycode()) finally: loop.close()
Output:
This is a coroutine
Tasks:
These are used to schedule and this subclass is responsible for the execution of coroutines within an event loop in a parallel manner.
Syntax: asyncio.Task
Example:
import asyncio async def Mycode(): print("Hello") async def Anothercode(): print("User") loop = asyncio.get_event_loop() task1 = loop.create_task(Mycode()) task2 = loop.create_task(Anothercode()) loop.run_until_complete(asyncio.wait([task1, task2]))
Output:
Hello
User