Встречается на собеседованиях • сегодня

Чем запускать параллельно I/O bound задачи в Python

Для параллельного выполнения I/O-bound задач в Python лучше всего использовать asyncio или многопоточность (threading), так как GIL не блокирует потоки во время операций ввода-вывода.

1. asyncio (предпочтительно для современных приложений):

python
import asyncio

async def fetch_data(url):
    # имитация I/O операции
    await asyncio.sleep(1)
    return f"Данные с {url}"

async def main():
tasks = [fetch_data(f"url_{i}") for i in range(3)]
results = await asyncio.gather(*tasks)
print(results)

asyncio.run(main())

text

**2. `threading`** (проще, но менее эффективно при большом числе задач):  
```python
from threading import Thread
import time

def fetch_data(url):
    time.sleep(1)
    print(f"Данные с {url}")

threads = [Thread(target=fetch_data, args=(f"url_{i}",)) for i in range(3)]
for t in threads: t.start()
for t in threads: t.join()

Выбор:

  • asyncio — для асинхронного кода (HTTP-запросы, базы данных с async поддержкой).
  • threading — если используются синхронные библиотеки (например, requests).

Для CPU-bound задач вместо этого используй multiprocessing.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы