import multiprocessing pipe = multiprocessing.Pipe([duplex])
duplex -(conn1, conn2), состоящий из объектов Connection.Класс Pipe() модуля multiprocessing возвращает парный кортеж (conn1, conn2), состоящий из объектов Connection, представляющих концы одного канала.
duplex=True (по умолчанию), то тогда канал является двунаправленным.duplex=False, то тогда канал является однонаправленным:Объекты Connection позволяют отправлять и получать упакованные picklable объекты или текстовые или байтовые строки. Их можно рассматривать как подключенные сокеты, ориентированные на сообщения.
Connection.Connection.send() отправляет объект на другой конец соединения,Connection.recv() возвращает объект, отправленный с другого конца соединения,Connection.fileno() возвращает файловый дескриптор соединения,Connection.close() закрывает соединение,Connection.poll() возвращает, если есть какие-либо данные,Connection.send_bytes() отправляет байтовые данные из байтового объекта,Connection.recv_bytes() возвращает полное сообщение байтовых данных,Connection.recv_bytes_into() читает в буфер полное сообщение байтовых данных.ConnectionConnection.send(obj):Метод Connection.send() отправляет объект obj на другой конец соединения, который должен быть прочитан с помощью метода Connection.recv().
Объект должен быть упакован picklable. Очень большие объекты picklable (примерно 32 МБ+, хотя это зависит от операционной системы) могут вызвать исключение ValueError.
Connection.recv():Метод Connection.recv() возвращает объект, отправленный с другого конца соединения с помощью функции Connection.send().
Блокируется до тех пор, пока есть что получить. Поднимает исключение EOFError, если больше нечего принимать, а другой конец был закрыт.
Connection.fileno():Метод Connection.fileno() возвращает файловый дескриптор или дескриптор, используемый соединением.
Connection.close():Метод Connection.close() закрывает соединение.
Метод вызывается автоматически при сборке мусора.
Connection.poll([timeout]):Метод Connection.poll() возвращает, если есть какие-либо данные, доступные для чтения.
timeout не указан, то метод возвращает результат немедленно.timeout - это число, то он указывает максимальное время блокировки в секундах.timeout=None, то используется бесконечный тайм-аут. Другими словами, метод ждет до упора, пока не поступят данные.Обратите внимание, что несколько объектов подключения могут быть опрошены одновременно с помощью multiprocessing.connection.wait().
Connection.send_bytes(buffer[, offset[, size]]):Метод Connection.send_bytes() отправляет байтовые данные из байтового объекта в виде полного сообщения.
Если задано смещение offset, то данные считываются из этой позиции в буфере buffer.Если указан размер size, то переданное количество байт будет прочитано из буфера.
Очень большие буферы buffer (примерно 32 МБ +, хотя это зависит от ОС) могут вызвать исключение ValueError.
Connection.recv_bytes([maxlength]):Метод Connection.recv_bytes() возвращает полное сообщение байтовых данных, отправленных с другого конца соединения в виде строки.
Блокируется до тех пор, пока есть что получить. Поднимает исключение EOFError, если больше нечего получить, а другой конец был закрыт.
Если задан аргумент maxlength и сообщение длиннее maxlength, то возникает ошибка OSError, а соединение больше не будет читаться.
Connection.recv_bytes_into(buffer[, offset]):Метод Connection.recv_bytes_into() читает в буфер полное сообщение байтовых данных, отправленное с другого конца соединения, и возвращает количество байтов в сообщении.
Блокируется до тех пор, пока есть что получить. Поднимает исключение EOFError, если больше нечего получить, а другой конец был закрыт.
Аргумент buffer должен быть записываемым байтовым объектом (array.array, bytearray или memoryview).
Если задано смещение offset, то сообщение будет записано в буфер с этой позиции. Смещение должно быть неотрицательным целым числом меньше длины буфера (в байтах).
Если буфер слишком короткий, то возникает исключение BufferTooShort, а полное сообщение будет доступно как e.args[0], где e это экземпляр исключения.
Connection.>>> from multiprocessing import Pipe >>> a, b = Pipe() >>> a.send([1, 'hello', None]) >>> b.recv() # [1, 'hello', None] >>> b.send_bytes(b'thank you') >>> a.recv_bytes() # b'thank you' >>> import array >>> arr1 = array.array('i', range(5)) >>> arr2 = array.array('i', [0] * 10) >>> a.send_bytes(arr1) >>> count = b.recv_bytes_into(arr2) >>> assert count == len(arr1) * arr1.itemsize >>> arr2 # array('i', [0, 1, 2, 3, 4, 0, 0, 0, 0, 0])