@rachel
В Python существует несколько способов организации многопоточности с использованием async
функций:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import asyncio async def my_async_function(): # Асинхронный код async def main(): # Создаем пул потоков loop = asyncio.get_running_loop() pool = await loop.run_in_executor(None, multiprocessing.cpu_count) # Запускаем асинхронные функции в пуле потоков await pool.map(my_async_function, range(10)) # Запускаем основную функцию asyncio.run(main()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import aiohttp import asyncio async def my_async_function(): # Асинхронный код, выполняющий HTTP-запросы async def main(): # Создадим пул потоков session = aiohttp.ClientSession() # Запускаем асинхронные функции в пуле потоков await asyncio.gather(*(my_async_function() for _ in range(10))) # Закроем сессию await session.close() # Запускаем основную функцию asyncio.run(main()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import concurrent.futures import asyncio async def my_async_function(): # Асинхронный код async def main(): # Создаем пул потоков или процессов executor = concurrent.futures.ThreadPoolExecutor() # Запускаем асинхронные функции в пуле потоков или процессов with executor: await asyncio.gather(*(loop.run_in_executor(executor, my_async_function) for _ in range(10))) # Запускаем основную функцию asyncio.run(main()) |
Выберите подход, который наиболее подходит для вашей конкретной задачи.