Какие подходы применял для параллельной обработки данных

Python Middle Без компании
Какие подходы применял для параллельной обработки данных
Ответы
В Python для параллельной обработки данных часто используют: - **Потоки (threading)** – подходят для I/O-bound задач (например, сетевые запросы). ``` import threading def task(): print("Thread running") threads = [threading.Thread(target=task) for _ in range(5)] for t in threads: t.start() for t in threads: t.join() ``` - **Процессы (multiprocessing)** – для CPU-bound задач (вычисления). ``` from multiprocessing import Pool def square(x): return x * x with Pool(4) as p: print(p.map(square, [1, 2, 3])) ``` - **Asyncio** – асинхронность для I/O-bound задач с корутинами. ``` import asyncio async def fetch_data(): await asyncio.sleep(1) return "Data" async def main(): tasks = [fetch_data() for _ in range(3)] results = await asyncio.gather(*tasks) asyncio.run(main()) ``` - **Dask/Ray** – для распределенных вычислений и больших данных. Нюансы: - GIL ограничивает потоки в CPU-bound задачах. - Процессы имеют накладные расходы на создание. - Asyncio требует переписывания кода под async/await.