gpt4 book ai didi

python - FIFO(命名管道)消息传递障碍

转载 作者:太空狗 更新时间:2023-10-29 11:28:19 24 4
gpt4 key购买 nike

我计划使用 Unix 命名管道 (mkfifo) 进行简单的多进程消息传递。一条消息只是一行文本。

你会阻止我这样做吗?我应该遇到什么障碍?

我注意到这些限制:

  1. 在收到消息之前,发件人无法继续。
  2. 接收器被阻塞,直到有一些数据。需要非阻塞 IO当我们需要停止阅读时。例如,另一个线程可能会要求这样做。
  3. 接收方可以在一次读取中获得许多消息。这些都要处理退出前。
  4. 原子消息的最大长度限制为 4096 字节。这是 Linux 上的 PIPE_BUF 限制(参见 man 7 pipe)。

我将用 Python 实现消息传递。但总体而言,障碍依然存在。

最佳答案

  1. 缺乏可移植性——它们主要是 Unix 的东西。套接字更便携。
  2. 更难扩展到多个系统(另一个套接字+)
  3. 另一方面,对于同一台机器上的进程,我认为管道比套接字更快(通信开销更少)。

至于你的局限性,

  1. 您可以在管道上使用“select”来进行非阻塞读取。
  2. 我通常(在 perl 中)在用“\n”分隔的管道上打印我的消息,并从中读取一行以一次获取一条消息。
  3. 请注意原子长度。

我找到了 perlipc成为各种选项之间的一个很好的讨论,尽管它有 perl 特定的代码。

关于python - FIFO(命名管道)消息传递障碍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/927233/

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