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

Какой вид многопоточности будешь использовать для рассылки писем

Для рассылки писем лучше использовать ThreadPoolExecutor из модуля concurrent.futures. Он эффективно управляет пулом потоков, ограничивает их количество и упрощает обработку результатов.

python
from concurrent.futures import ThreadPoolExecutor
import smtplib

def send_email(to, subject, body):
    try:
        with smtplib.SMTP("smtp.example.com", 587) as server:
            server.starttls()
            server.login("user@example.com", "password")
            message = f"Subject: {subject}\n\n{body}"
            server.sendmail("user@example.com", to, message)
    except Exception as e:
        print(f"Error sending to {to}: {e}")

emails = ["user1@example.com", "user2@example.com", ...]

with ThreadPoolExecutor(max_workers=10) as executor:
for email in emails:
executor.submit(send_email, email, "Subject", "Hello!")

text

**Почему?**  
- SMTP-запросы — I/O-bound задача, потоки хорошо подходят.  
- `ThreadPoolExecutor` автоматически управляет потоками и их переиспользованием.  
- `max_workers` ограничивает нагрузку на SMTP-сервер.  
- Проще масштабировать, чем ручное создание потоков.  

Для очень больших рассылок можно добавить асинхронность (`asyncio` + `aiohttp`), но для большинства случаев потоков достаточно.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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