Synchronization Primitive Event

suggest change

Concept

Use an Event to synchronize the scheduling of multiple coroutines.

Put simply, an event is like the gun shot at a running race: it lets the runners off the starting blocks.

Example

import asyncio

# event trigger function
def trigger(event):

print(‘EVENT SET’) event.set() # wake up coroutines waiting

# event consumers
async def consumer_a(event):

consumer_name = ‘Consumer A’ print(’{} waiting’.format(consumer_name)) await event.wait() print(’{} triggered’.format(consumer_name))

async def consumer_b(event):

consumer_name = ‘Consumer B’ print(’{} waiting’.format(consumer_name)) await event.wait() print(’{} triggered’.format(consumer_name))

# event
event = asyncio.Event()

# wrap coroutines in one future
main_future = asyncio.wait([consumer_a(event),
                            consumer_b(event)])

# event loop
event_loop = asyncio.get_event_loop()
event_loop.call_later(0.1, functools.partial(trigger, event))  # trigger event in 0.1 sec

# complete main_future
done, pending = event_loop.run_until_complete(main_future)

Output:

Consumer B waiting

Consumer A waiting

EVENT SET

Consumer B triggered

Consumer A triggered

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents