import asyncio import concurrent.futures import sys def test_method(i): a = i + 1 return a async def main(): loop = asyncio.get_running_loop() print(f'loop={loop}') thread_pool = concurrent.futures.ThreadPoolExecutor(thread_name_prefix="test_worker") for i in range(370): # this # (370) is the smallest number that crashes on my machine -- YMMV loop.run_in_executor(thread_pool, test_method, i) await asyncio.sleep(2) return 17 if __name__ == '__main__': print(f'sys.version={sys.version}') asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) result = asyncio.run(main())