gpt4 book ai didi

python - 多处理是否支持命名管道 (FIFO)?

转载 作者:行者123 更新时间:2023-11-28 22:19:03 25 4
gpt4 key购买 nike

Multiprocessing的PipesQueue都是基于匿名管道的,Python的multiprocessing是否提供命名管道(FIFO)?

最佳答案

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

如果你只关心 Unix,或者只关心 Windows,你当然可以手动创建命名管道。对于 Unix,mkfifo在标准库中。对于 Windows,您必须使用 ctypescffi,或者像 win32api 这样的第三方库来调用 CreateFile有正确的论据。

试图对两者之间的语义差异进行抽象是非常痛苦的,这可能是标准库不尝试这样做的原因。 (例如,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()

关于python - 多处理是否支持命名管道 (FIFO)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com