В Python есть несколько способов добавить асинхронность в процессы. Рассмотрим две основные техники - использование многопоточности и использование асинхронных функций с помощью ключевого слова async
.
1. Многопоточность: В Python есть модуль threading
, который позволяет создавать и управлять потоками выполнения. Это позволяет выполнять несколько задач одновременно и обеспечивает асинхронность. Рассмотрим простой пример:
import threading def my_function(): # код функции # Создаем новый поток my_thread = threading.Thread(target=my_function) # Запускаем поток my_thread.start() # Другой код, выполняющийся асинхронно с my_function()
В этом примере мы создаем новый поток, передавая в качестве аргумента функцию my_function()
, которую мы хотим выполнять параллельно с другим кодом. Затем мы запускаем поток с помощью метода start()
. Это позволяет my_function()
выполняться асинхронно с остальным кодом.
2. Асинхронные функции: В Python 3.5 и выше введено новое ключевое слово async
, которое позволяет создавать асинхронные функции и использовать await
для ожидания выполнения других асинхронных функций. Это основано на концепции "сопрограмм" (coroutines) и позволяет более гибко контролировать выполнение задач. Пример:
import asyncio async def my_function(): # асинхронный код # Создаем новый цикл событий asyncio loop = asyncio.get_event_loop() # Запускаем асинхронную функцию loop.run_until_complete(my_function()) # Другой код, выполняющийся асинхронно с my_function()
В этом примере мы создаем асинхронную функцию, используя ключевое слово async
перед определением функции. await
используется для ожидания выполнения других асинхронных функций. Затем мы создаем цикл событий asyncio и запускаем асинхронную функцию с помощью метода run_until_complete()
. После этого my_function()
выполняется асинхронно с другим кодом.
В обоих примерах ключевой момент - разделение работы между разными потоками или асинхронными функциями, что позволяет выполнить задачи параллельно и достичь асинхронного выполнения.