async def cond_go(loop): ntasks = 7 barrier = asyn.Barrier(ntasks + 1) loop.create_task(asyn.Cancellable(cond01)()) loop.create_task(asyn.Cancellable(cond03)()) for n in range(ntasks): loop.create_task(cond02(n, barrier)) await barrier # All instances of cond02 have completed # Test wait_for barrier = asyn.Barrier(2) loop.create_task(cond04(99, barrier)) await barrier # cancel continuously running coros. await asyn.Cancellable.cancel_all() print('Done.')
async def run_cancel_test3(): barrier = asyn.Barrier(2) loop = asyncio.get_event_loop() loop.create_task(asyn.NamedTask('cant3', cant3, barrier=barrier)()) print('Task cant3 running status', asyn.NamedTask.is_running('cant3')) await asyncio.sleep(3) print('Task cant3 running status', asyn.NamedTask.is_running('cant3')) print('About to cancel task') await asyn.NamedTask.cancel('cant3') print('Cancelled') print('Task cant3 running status', asyn.NamedTask.is_running('cant3')) await barrier print('tasks were cancelled')
async def run_cancel_test2(): barrier = asyn.Barrier(3) loop = asyncio.get_event_loop() loop.create_task(asyn.NamedTask('rats_1', rats, 1, barrier=barrier)()) loop.create_task(asyn.NamedTask('rats_2', rats, 2, barrier=barrier)()) print('Running two tasks') await asyncio.sleep(10) print('About to cancel tasks') await asyn.NamedTask.cancel( 'rats_1') # These will stop when their wait is complete await asyn.NamedTask.cancel('rats_2') await barrier # So wait for that to occur. print('tasks were cancelled')
def barrier_test(): printexp('''0 0 0 Synch 1 1 1 Synch 2 2 2 Synch 3 3 3 Synch 4 4 4 Synch ''') barrier = asyn.Barrier(3, callback, ('Synch',)) loop = asyncio.get_event_loop() for _ in range(3): loop.create_task(report(barrier)) loop.run_until_complete(killer(2)) loop.close()
async def run_sema_test(bounded): num_coros = 5 loop = asyncio.get_event_loop() barrier = asyn.Barrier(num_coros + 1) if bounded: semaphore = asyn.BoundedSemaphore(3) else: semaphore = asyn.Semaphore(3) for n in range(num_coros): loop.create_task(run_sema(n, semaphore, barrier)) await barrier # Quit when all coros complete try: semaphore.release() except ValueError: print('Bounded semaphore exception test OK')
async def main(loop): print('Press Pyboard usr button to stop test.') bar = asyn.Barrier(4, refresh, (ssd,)) # Asynchronously flash Pyboard LED's. Because we can. loop.create_task(asyn.Cancellable(flash, 1, 200)()) loop.create_task(asyn.Cancellable(flash, 2, 233)()) # Task for each meter and GUI LED loop.create_task(asyn.Cancellable(meter, bar, 2, 'left')()) loop.create_task(asyn.Cancellable(meter, bar, 50, 'right')()) loop.create_task(asyn.Cancellable(meter, bar, 98, 'bass')()) try: while True: await asyncio.sleep_ms(800) # If necessary wait until all meters have updated. # Barrier callback updates display. await bar except asyn.StopTask: ssd.fill(0) # Clear display at end. refresh(ssd)
await rfm9x.receive(timeout=5.0) if rfm9x.packet is not None: packet_text = str(rfm9x.packet, 'ascii') rssi=str(rfm9x.rssi) print('Received: {0}'.format(packet_text)) print("RSSI:",rssi) except uasyncio.TimeoutError: print('got timeout') async def foo(): while True: await uasyncio.wait_for(grab_radio(),3) await uasyncio.sleep(2) barrier = asyn.Barrier(3,callback,('Synch',)) async def killer(duration): await uasyncio.sleep(duration) def callback(text): await rfm9x.receive(timeout=5.0) if rfm9x.packet is not None: packet_text = str(rfm9x.packet, 'ascii') rssi=str(rfm9x.rssi) print('Received: {0}'.format(packet_text)) print("RSSI:",rssi) async def report(barrier): for i in range(5): print('{} '.format(i), end='')