import asyncio
import functools
import random
import time
def
set_event(
event,
t):
''' set event '''
t2=time.time()-t
print(
'set_event (
%5.3f
) :trigger the event...'%t2)
event.set()
t2=time.time()-t
print(
'set_event (
%5.3f
) :trigger triggerred..'%t2)
async
def
task(
event,
name,
t):
''' task '''
t2=time.time()-t
print(
'task (
%s
)(
%5.3f
) :start task' % (name, t2))
print(
'task (
%s
)(
%5.3f
) :working for some seconds' % (name, t2))
await asyncio.sleep(random.random()*
5)
t2 = time.time() - t
print(
'task (
%s
)(
%5.3f
) :afterwork,waiting for trigger' % (name, t2))
await event.wait()
t2 = time.time() - t
print(
'task (
%s
)(
%5.3f
) :trigger was touched,i will do something.' % (name, t2))
await(asyncio.sleep(random.random()*
3))
t2 = time.time() - t
print(
'task (
%s
)(
%5.3f
) :my task is done.' % (name, t2))
async
def
main(
loop):
''' main '''
event=asyncio.Event()
t1=time.time()
print(
'main (
%5.3f
) :event states--
%s
'%(t1,event.is_set()))
loop.call_later(
6.5, functools.partial(set_event, event, t1))
await asyncio.wait([task(event, i, t1)
for i
in
range(
3)])
t2 = time.time() - t1
print(
'main (
%5.3f
) :event states--
%s
'%(t2,event.is_set()))
loop=asyncio.get_event_loop()
loop.run_until_complete(main(loop))
loop.close()