多处理的 pipes 和 queue 基于匿名管道,python的 multiprocessing
是否提供了命名pipes fifo fifo(?
没有内置支持multiprocessing
中命名管的跨平台抽象。
如果您只关心UNIX,或者仅关心Windows,则当然可以手动创建名为Pipes。对于UNIX,mkfifo
在stdlib中。对于Windows,您必须使用ctypes
或cffi
或像win32api
这样的第三方库来调用CreateFile
,并使用正确的参数。
试图在两者之间的语义差异上抽象非常痛苦,这可能就是为什么stdlib不尝试这样做的原因。(例如,名为管道的窗口是挥发性的; POSIX名为Pipes是永久的。(
这是一个微不足道的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()
类综合处理.connection.listener([address [,family [,backlog [,authkey]]]](
一个绑定套接字或名为"侦听"连接的窗口的包装器。地址是由侦听器对象的界套接字或命名的管道使用的地址。