gpt4 book ai didi

python - 如何从流写入python中的共享内存?

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:19 26 4
gpt4 key购买 nike

我有一个来自多个服务器的进程,每秒通过 udp 将数据发送到我的本地端口 2222。

我想读取此数据并将其写入共享内存,以便其他进程可以从共享内存读取数据并对其执行操作。

我一直在阅读有关 mmap 的内容,似乎我必须使用一个文件...我似乎不明白为什么。

我有一个从套接字读取数据的a.py,但我如何将它写入 shm?

一旦写好了,就需要写b.pyc.pyd.py等,来读取完全相同的 shm 并对其执行操作。

任何帮助或代码片段都会有很大帮助。

最佳答案

首先,请注意,您要构建的内容需要的不仅仅是共享内存:如果 a.py 写入共享内存就没问题,但是 b.py 将如何 知道内存何时准备就绪并且可以从中读取?总而言之,通过连接多个进程而不是通过共享内存,而是通过一些其他机制来解决这个问题通常更简单。

(mmap 通常需要一个文件名的原因是它需要一个名称 来连接几个进程。事实上,如果 a.pyb.py 都调用 mmap(),系统如何知道这两个进程正在请求在它们之间共享内存,而不是一些不相关的z.py?因为它们都 mmap 编辑了同一个文件。还有特定于 Linux 的扩展来提供与 file< 不对应的名称/em> 名称,但恕我直言,它更像是一个 hack。)

也许最基本的替代机制是管道:它们通常在程序启动时借助 shell 连接。这就是下面的工作原理(在 Linux/Unix 上):python a.py | python b.py. a.py 发送的任何输出都进入管道,管道的另一端是 b.py 的输入。您将编写 a.py 以便它监听 UDP 套接字并将数据写入 stdout,并编写 b.py 以便它从 stdin 读取以处理数据已收到。如果数据需要进入多个进程,您可以使用例如命名管道,它有一个很好的(但特定于 Bash)语法:python a.py >(python b.py) >(python c.py) 将启动 a.py 有两个参数,它们是可以打开和写入的伪文件的名称。写入第一个伪文件的内容将作为 b.py 的输入,类似地,写入第二个伪文件的内容将作为 c.py 的输入。

关于python - 如何从流写入python中的共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13487181/

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