В multiprocessing
.
нет встроенной поддержки межплатформенной абстракции именованных каналов.
Если вас интересует только Unix или только Windows, вы, конечно, можете создавать именованные каналы вручную. Для Unix mkfifo
находится в stdlib. Для 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()