I want to run all the coroutines from the list in a pool of constant size and would like to ask if this is the right way how to achieve it. Is there any built in solution for this problem? I have not found any.
	
    def subprocess_pool(coroutines, pool_size=3):
		loop = asyncio.get_event_loop()
		event_finished = asyncio.Event()
		
		def done(future):
		    event_finished.set()

		@asyncio.coroutine 
		def scheduler(coroutines):
		    num = len(coroutines)
		    finished = 0
		    started = 0
		    while finished<num:
		        if coroutines and (started - finished) < pool_size:
		            cor = coroutines.pop(0)
		            task = loop.create_task(cor) 
		            task.add_done_callback(done)
		            started += 1
		        else:
		            yield from event_finished.wait()
		            event_finished.clear()
		            finished += 1
		    return True

		loop.run_until_complete(scheduler(coroutines))
		loop.close()