Многопроцессорные каналы и очередь основаны на анонимных каналах. Предоставляет ли multiprocessing Python именованные каналы (FIFO)?
Вопрос
Поддерживает ли многопроцессорность именованные каналы (FIFO)?
- Кстати, тег pipe относится конкретно к анонимным каналам Unix, а тег fifo - к очередям и каналам в целом; тег для именованных каналов - named-pipes. abarnert 28.04.2018
Ответы
Ответ 1 · рейтинг 3 · abarnert
В multiprocessing нет встроенной поддержки кроссплатформенной абстракции именованных каналов.
Если вас интересует только Unix или только Windows, вы, конечно, можете создать именованные каналы вручную. Для Unix mkfifo находится в стандартной библиотеке. Для Windows вы должны использовать ctypes или cffi или стороннюю библиотеку, например win32api, для вызова CreateFile с правильными аргументами.
Попытка абстрагироваться от семантических различий между ними довольно болезненна, возможно, поэтому stdlib не пытается этого делать. (Например, именованные каналы Windows являются временными, а именованные каналы posix - постоянными.)
Вот тривиальный пример Unix:
import multiprocessing
import os
def child():
with open('mypipe', 'rb') as p:
print(p.read())
def main():
try:
os.mkfifo('mypipe')
except FileExistsError:
pass
multiprocessing.Process(target=child).start()
with open('mypipe', 'wb') as p:
p.write(b'hi')
os.remove('mypipe')
if __name__ == '__main__':
main()
Ответ 2 · рейтинг 1 · QuantumEnergy
class multiprocessing.connection.Listener([адрес[, семья[, невыполненная работа[, ключ авторизации]]]])
Оболочка для связанного сокета или именованного канала Windows, которая "прослушивает" подключения. Адрес - это адрес, который будет использоваться связанным сокетом или именованным каналом объекта прослушивателя.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Как создать чат-бота с помощью библиотеки Python ChatterBot
- Кластеризация машинного обучения с помощью Scikit-learn: пошаговое руководство
- Как извлечь таблицы из файлов PDF с помощью Camelot
- Трансформеры: изменяющая правила игры нейронная сеть, на которой работает ChatGPT
- Многопоточность против многопроцессорности в Python
- Веб-воркеры за 8 минут