Каналы, как механизм взаимодействия программ, реализуются операционной системой, а стандартная библиотека Python лишь обеспечивает доступ к ним. Каналы — это однонаправленные потоки ввода-вывода, по своему действию напоминающие буфер в совместно используемой памяти, интерфейс которого с обеих сторон похож на простой файл. В самом типичном случае использования одна программа пишет данные с одного конца канала, а вторая читает их с другого конца. Каждая из программ видит только свой конец канала и обрабатывает его с помощью обычных функций для работы с файлами.
Каналы бывают двух видов — анонимные и именованные. Именованные каналы (иногда их называют «fifo») представляются в компьютере в виде файла. Так как именованные каналы фактически являются внешними файлами, взаимодействующие процессы вообще могут быть не связаны родственными узами — они могут быть совершенно независимыми программами.
Анонимные каналы, напротив, существуют только внутри процессов и обычно используются вместе с приемом ветвления процессов, как средство связи родительского и порожденного дочернего процессов в приложении: родитель и потомок общаются через совместно используемые дескрипторы файлов каналов. Потоки выполнения действуют в одном и том же процессе и совместно используют всю глобальную память, поэтому анонимные каналы могут использоваться и для взаимодействий между ними.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011