Что такое zero-copy операции, например системный вызов sendfile? Как передать файл из дискового хранилища в сетевой сокет, минуя копирование данных в пользовательское пространство приложения на Python?

Zero-copy уменьшает лишние копирования между ядром и приложением. Для файла и блокирующего TCP-сокета Python предоставляет socket.sendfile(), использующий системную поддержку, когда она доступна.

Короткий ответ

Что ответить на собеседовании

Zero-copy уменьшает лишние копирования между ядром и приложением. Для файла и блокирующего TCP-сокета Python предоставляет socket.sendfile(), использующий системную поддержку, когда она доступна.

Подробный разбор

Ответ с пояснениями

Zero-copy уменьшает лишние копирования между ядром и приложением. Для файла и блокирующего TCP-сокета Python предоставляет socket.sendfile(), использующий системную поддержку, когда она доступна.

Для уже подключённого обычного сокета:

with open("report.bin", "rb") as source:
    sent = sock.sendfile(source)

Это позволяет не писать цикл read() и send() с буфером в Python. Метод может использовать fallback, поэтому «zero-copy» не является безусловной гарантией для любой платформы. Учтите ошибки соединения, ограничения неблокирующих сокетов и отдельный путь для TLS. Термин не означает полного отсутствия перемещений данных внутри памяти и оборудования.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее