What is the best practice of performing multiple periodic pollings in parallel

You are intentionally only calling one activity at a time and waiting. You should use normal Python asyncio primitives if you need do things concurrently. For example, instead of await workflow.execute_activity, you can just call it without await and put the awaitable on a list, then await the result of asyncio.wait with that list and return_when=FIRST_COMPLETED to get the first completed.