@to_east

Python обмен данными между процессами через Пайпы?

Приветствую участников тостера!
Объясните пожалуйста один момент, при использовании Pipes в документации есть одна оговорка, что данные могут быть повреждены, если два или более процесса, используют один конец трубы.
То есть правильно ли я понимаю что потребитель должен быть один и только один, который вызывает recv() из трубы, но Производителей может быть один или более, при том что порядок поступления данных неважен.
Или же все-таки придерживаться строгой схемы Производитель-Потребитель.

И еще один вопрос: Производитель отправляет данные вызывая функцию send(), Потребителю сразу может считать эти данные, или пока Производитель не закроет пайп(close()), данные не будут доступны для Потребителя?
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ответы на вопрос 2
@deliro
То есть правильно ли я понимаю что потребитель должен быть один и только один

Да, это написано в документации. В противном случае используй Queue или его производные.
Ответ написан
Комментировать
@to_east Автор вопроса
Немного не по теме спрошу, а возможно ли использовать Queue вместе с asyncio, для предотвращения гонок в совместно используемых данных, несколькими роутинами.
И еще вопрос. На днях ознакомился навскидку с асинхронным программированием в Python, по сути все выполняется в одном потоке, просто эффективно распределяется процессорное время между тасками(поправьте, если не верно, или неточно), так вот зачем необходимы примитивы синхронизации, такие как Lock, Event, Condition, Semaphore(в модуле asyncio), если доступ имеет только один поток в одно время?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽
20 июн. 2024, в 17:56
400 руб./за проект
20 июн. 2024, в 17:27
50000 руб./за проект
20 июн. 2024, в 17:11
400 руб./за проект