如何在python进程之间实时共享对象和数据?

2024-01-17

我正在尝试在 Python 中为实时应用程序、多重处理和大文件找到一种合理的方法。

一个父进程生成 2 个或更多子进程。第一个孩子读取数据,保存在内存中,其他孩子以管道方式处理它。数据应该被组织成一个对象,发送到下面的进程,进行处理、发送、处理等等。

由于开销(序列化等),可用的方法(例如管道、队列、管理器)似乎不够用。

对此有适当的方法吗?


我已经使用 Celery 和 Redis 在高内存应用程序中进行实时多处理,但这实际上取决于您想要完成的任务。

我发现 Celery 相对于内置多处理工具(管道/队列)的最大好处是:

  • 开销低。您直接调用函数,无需序列化数据。
  • 缩放。需要提高工作进程吗?只需添加更多工人即可。
  • 透明度。易于检查任务/工作人员并发现瓶颈。

如果要真正发挥性能,ZMQ 是我的首选。需要进行更多的设置和微调工作,但它已经尽可能安全地接近裸插座了。

免责声明:这都是轶事。这实际上取决于您的具体需求。在您走上任何道路之前,我会使用示例数据对不同的选项进行基准测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在python进程之间实时共享对象和数据? 的相关文章

  • 使用 pythonw.exe 时 Python subprocess.call() 失败

    我有一些 Python 代码 当我使用 python exe 运行时可以正常工作 但如果我使用 pythonw exe 则失败 def runStuff commandLine outputFileName somefile txt out
  • 如何绘制日期和月份

    我有一张随时间变化的每日趋势图表 年份与此处无关 我只想显示日期和月份 我知道你可以显示年份和月份 但事实并非如此 我尝试创建一个名为 Day Month 的新变量 import datetime as dt df Day df date
  • Tensorflow GPU 设置:PyCharm 上的 CUDA 错误

    我在 Python3 MacOSX El Capitan 上安装了 TF 0 8 当为 TF 运行简单的测试代码时 我收到以下消息 ImportError dlopen Library Frameworks Python framework
  • 无法更改现有 Keras 模型中的激活

    我有一个普通的 VGG16 模型relu激活 即 def VGG 16 weights path None model Sequential model add ZeroPadding2D 1 1 input shape 3 224 224
  • 从 STEP 文件中提取体积

    我的目标是编写一个Python程序来提取物体的体积STEP文件 我找到了步骤实用程序 https pypi org project steputils and 奥交换 https pypi org project aocxchange 是
  • 安装 python-dev 和链接库后,Cython 中的 Hello World 程序因 gcc 失败

    我创建了一个简单的 hello world 程序 并尝试使用 gcc 执行生成的 C 程序 但无论我做什么 我都会得到大量未定义的引用 SO 有很多类似的问题 但他们都说安装 python dev 或其某些变体 或添加用于链接和加载库的标志
  • 不区分大小写的用户输入字符串

    使用哪个函数使用户输入字符串不区分大小写 correctAnswer London userGuess input What is the capital of Great Britain if userGuess London print
  • Anaconda / 求解环境:初始冻结求解失败。使用灵活的求解重试

    我尝试安装 anaconda 软件包 出现以下消息 求解环境 初始冻结求解失败 使用灵活的解决方案重试 解决环境 current repodata json 中的 repodata 失败 将使用下一个 repodata 源重试 收集包元数据
  • 通过 rpy2 将 numpy 数组传递给 R 时出现不一致数组

    我正在尝试将 numpy 数组传递到 R 中的 GAMLSS 包 import numpy as np import rpy2 robjects as robjects from rpy2 robjects import numpy2ri
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • 如何删除Python中特定字符之前的所有字符?

    我想删除指定字符或字符集之前的所有字符 例如 intro lt gt I m Tom 现在我想删除 lt gt before I m 或者更具体地说 I 有什么建议么 Use re sub 只需匹配所有字符即可I然后将匹配的字符替换为I r
  • ValueError:当数组不是序列时设置带有序列的数组元素

    您好 此代码旨在存储使用 open cv 绘制的矩形的坐标 并将结果编译为单个图像 import numpy as np import cv2 im cv2 imread 1 jpg im3 im copy gray cv2 cvtColo
  • 如何为python虚拟环境设置特定的python版本? [复制]

    这个问题在这里已经有答案了 我是 python 的新手 我正在尝试为我的项目添加一个新环境 该环境在我当前的环境 Python 3 7 5 上运行良好 添加所有依赖项后 我遇到了 pyttsx3 包的问题 用于 python 文本到语音 进
  • 如何在python中将所有参数转换为字典

    我想要我的功能func args kwargs 返回一本字典 其中包含我提供给它的所有参数 例如 func arg1 arg2 arg3 value3 arg4 value4 应该返回一本这样的字典 arg1 value1 arg2 val
  • 带约束的简单线性回归

    我开发了一种算法来循环 15 个变量并为每个变量生成一个简单的 OLS 然后算法再循环 11 次以产生相同的 15 个 OLS 回归 但 X 变量的滞后每次增加 1 我选择具有最高 r 2 的自变量 并使用 3 4 或 5 个变量的最佳滞后
  • Django:503 服务不可用

    Related 我对 Python 及其框架完全陌生 在学习了一些 Python 基础知识后 我只是尝试一下 Django Problem 现在我正在尝试在第一次安装后运行 Django 服务器 服务器运行没有任何错误 但是当我尝试访问该网
  • 导入不起作用

    我有两个文件说a py and b py 在 a py 中 我们的确是 import xxx from b import 在 b py 中我们有一个函数需要module xxx 现在当函数在b py被调用自a py它找不到模块xxx 为什么
  • 如何检查给定名称的变量是否是非本地变量?

    给定一个堆栈帧和一个变量名 我如何判断该变量是否是非局部的 例子 import inspect def is nonlocal frame varname How do I implement this return varname not
  • 导入 matplotlib.pyplot 挂起

    我正在尝试在 OS X 10 8 4 上启动并运行 matplotlib 我已经安装了 matplotlib 和依赖项 libping freetype numpy scipy 我可以很好地导入 matplotlib 但是 如果我尝试导入
  • 在 Python 中窗口“失焦”时读取 HID 输入

    我在一个问题上苦苦挣扎了好几天 但无法让它发挥作用 我刚刚开始使用 python 现在已经面临着我在这个项目中将面临的最大问题 情况是这样的 我必须编写一个扫描条形码的程序 将其传达给在线服务并打印 PDF 这一切都很好 但我也想在窗口 失

随机推荐