Асинхронное выполнение функций в отдельных потоках довольно часто дает возможность сделать вашу программу более эффективной.
Пример, как сделать асинхронное выполнение при помощи библиотеки asyncio
import asyncio # указываем асинхронные функции async def do(): task1 = asyncio.create_task(task('Анализ', 5)) task2 = asyncio.create_task(task('Подготовка', 7)) task3 = asyncio.create_task(task('Запуск', 3)) await task1 await task2 await task3 # исполняем задачу async def task(action, time_sleep): print(f'Новая задача: {action}') await asyncio.sleep(time_sleep) # эмуллируем задержку при исполнении функции print(f'{action} - готово!')
Для запуска, используйте:
asyncio.run(do())
Если вы попытаетесь запустить
asyncio.run(do())
из под Jupyter Notebook, то получите ошибку «RuntimeError: asyncio.run() cannot be called from a running event loop», т.к. Jupyter и так запущен в событийном цикле. Поэтому вместо этого вам нужно вызывать так:await do()
.
В итоге исполнения кода вы получите что-то вроде этого:
Новая задача: Анализ Новая задача: Подготовка Новая задача: Запуск Запуск - готово! Анализ - готово! Подготовка - готово!