diff --git a/brotab/parallel.py b/brotab/parallel.py index 4167817..7df77e5 100644 --- a/brotab/parallel.py +++ b/brotab/parallel.py @@ -1,6 +1,5 @@ from concurrent.futures import ThreadPoolExecutor -from asyncio import get_event_loop, gather - +from asyncio import get_event_loop, gather, new_event_loop, set_event_loop def call_parallel(functions): """ @@ -9,7 +8,15 @@ def call_parallel(functions): Create a pool of thread as large as the number of functions. Functions should accept no parameters (wrap then with partial or lambda). """ - loop = get_event_loop() + + try: + loop = get_event_loop() + if loop.is_closed(): + raise RuntimeError("Event loop is closed.") + except RuntimeError: + loop = new_event_loop() + set_event_loop(loop) + executor = ThreadPoolExecutor(max_workers=len(functions)) try: