多处理管道的多处理支持是fifo)



多处理的 pipes queue 基于匿名管道,python的 multiprocessing是否提供了命名pipes fifo fifo(?

没有内置支持multiprocessing中命名管的跨平台抽象。

如果您只关心UNIX,或者仅关心Windows,则当然可以手动创建名为Pipes。对于UNIX,mkfifo在stdlib中。对于Windows,您必须使用ctypescffi或像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]]]](

一个绑定套接字或名为"侦听"连接的窗口的包装器。地址是由侦听器对象的界套接字或命名的管道使用的地址。

相关内容

最新更新