Sandra doesn't like any dishes left in the sink. She'll wash and put away her breakfast dishes before she leaves for work. Even if it's one or two dirty items, she won't dump them in the sink and walk out the door. She's like this in all areas of her life. She prefers to do tasks steadily, as they come in. She doesn't like anything to build up or feel cluttered.
Python's asyncio.gather function is great for I/O bound parallel processing. There's a simple utility function I like to use that I call gather_in_batches: async def gather_in_batches(tasks, batch_size=100, return_exceptions=False): for i in range(0, len(tasks), batch_size): batch = tasks[i:i+batch_size] for result in await asyncio.gather(*batch, return_exceptions=return_exceptions): yield result