Встречается на собеседованиях • сегодня
Какой вид многопоточности будешь использовать для рассылки писем
Для рассылки писем лучше использовать 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`), но для большинства случаев потоков достаточно.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы