python:使用多处理共享巨大的字典

2024-01-04

我正在使用多重处理处理存储在字典中的大量数据。基本上我所做的就是加载一些存储在字典中的签名,从中构建一个共享的 dict 对象(获取 Manager.dict() 返回的“代理”对象)并将此代理作为参数传递给具有在多处理中执行。

只是为了澄清:

signatures = dict()
load_signatures(signatures)
[...]
manager = Manager()
signaturesProxy = manager.dict(signatures)
[...]
result = pool.map ( myfunction , [ signaturesProxy ]*NUM_CORES )

现在,如果一切正常签名条目数少于 200 万条左右。不管怎样,我必须处理一个有 580 万个键的字典(pickling签名二进制格式生成 4.8 GB 文件)。在这种情况下,进程在创建代理对象期间终止:

Traceback (most recent call last):
  File "matrix.py", line 617, in <module>
signaturesProxy = manager.dict(signatures)
  File "/usr/lib/python2.6/multiprocessing/managers.py", line 634, in temp
token, exp = self._create(typeid, *args, **kwds)
  File "/usr/lib/python2.6/multiprocessing/managers.py", line 534, in _create
id, exposed = dispatch(conn, None, 'create', (typeid,)+args, kwds)
  File "/usr/lib/python2.6/multiprocessing/managers.py", line 79, in dispatch
raise convert_to_error(kind, result)
multiprocessing.managers.RemoteError: 
---------------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.6/multiprocessing/managers.py", line 173, in handle_request
    request = c.recv()
EOFError
---------------------------------------------------------------------------

我知道数据结构很大,但我正在一台配备 32GB RAM 的机器上工作,运行 top 我发现该进程在加载签名后占用了 7GB RAM。然后它开始构建代理对象,RAM 使用量上升到约 17GB RAM,但从未接近 32。此时,RAM 使用量开始快速减少,并且该过程因上述错误而终止。所以我想这不是由于内存不足错误......

有什么想法或建议吗?

谢谢你,

Davide


为什么不用数据库来尝试一下呢?数据库不限于可寻址/物理内存,并且对于多线程/进程使用是安全的。

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

python:使用多处理共享巨大的字典 的相关文章

随机推荐

  • 使用Service、TimerTask和BroadcastReceiver来检查各种更新

    我正在尝试创建一个简单的程序来执行以下操作 由我的活动 UpdateServiceActivity 启动的服务 NewsService 检查新闻 如果发现新闻 NewsService 则会向接收者 NewsReceiver 发送广播 接收到
  • Android 10秒后隐藏布局?

    我在单击按钮时显示了一个布局 我想在 10 秒后隐藏该布局 protected void onCreate Bundle savedInstanceState super onCreate savedInstanceState mVolHa
  • 在 Visual Studio 2008 中调试 Web 服务时如何避免超时错误

    我正在使用控制台应用程序调用 Web 服务方法 并使用 vs2008 中的调试器单步调试代码 有时我需要停下来思考一些事情 比较一下价值观 不是说几个小时 只是几分钟 此时web服务超时了 如何避免这种情况 让web服务根本不超时 谢谢 好
  • 如何排除和过滤pandas中的几列?

    我知道我们可以使用 pandas dataframe 过滤器仅选择几列 但是我们也可以仅排除某些列吗 这是 MWE import numpy as np import pandas as pd df pd DataFrame id 1 2
  • 如何在 MKMapView 上绘制当前位置到所需位置之间的路线?

    我想显示我当前位置和所需位置之间的路线 我能够做到这一点 但是当源点和目的地点到目前为止时 它不会显示路线并给出内存警告 您能建议任何示例代码或任何方法来做到这一点吗 以下代码用于绘制当前位置到所需位置之间的路径 void viewDidL
  • jqGrid dataUrl下拉列表不刷新

    我是 Web 开发新手 正在开发我的第一个 ASP NET MVC 3 应用程序 我正在使用 jqGrid 并注意到刷新页面不会刷新下拉列表中的值 直到我在另一个选项卡中打开同一页面 然后刷新第一个选项卡将获取更改的值 我有一个控制器操作
  • For-each 与迭代器。哪个将是更好的选择

    考虑以下场景 List
  • 将新记录添加到私人 Outlook 通讯组列表

    我需要从文件或数据库中读取包含姓名和电子邮件的记录 并将它们添加到现有的 Oulook 通讯组列表 来自私人联系人 而不是来自 GAL 我刚刚看到使用 LINQ to DASL 从 OL 读取邮件和约会的示例 但我不知道如何列出 dist
  • Bootstrap 表,空单元格中的破折号/连字符

    我正在使用Wenzhixin的bootstrap table模块 http bootstrap table wenzhixin net cn http bootstrap table wenzhixin net cn 当我使用 JSON 加
  • 在express.js中设置cookie出现j:前缀

    我正在尝试使用 res cookie 设置 cookie 如下所示 res cookie userId req user id set cookie here console log req user id returned correct
  • 将哈希锚定到页面底部

    转到页面 底部 的通用 HTML 锚标记是什么 我知道标签 会自动将用户带到页面顶部 但我不太确定页面底部 没有一个 不过 你可以用类似的东西来模拟它 a a 然后链接到 bottom 你可能会发现这个帖子 https stackoverf
  • 如何将 int 转换为一系列字符

    我正在尝试将 8 位微控制器 PIC 上的 C 整数分解为其 ASCII 等效字符 例如 将 982 转换为 9 8 2 到目前为止我想出的一切似乎都相当暴力 这是我现在基本上正在做的主要想法 if 10 lt n n lt 100 iso
  • Celery (Django) 速率限制

    我正在使用 Celery 来处理多个数据挖掘任务 其中一项任务连接到远程服务 该服务最多允许 10 个同时连接per user 或者换句话说 它CAN全球连接数超过 10 个 但CANNOT每个单独作业超过 10 个连接 I THINK 令
  • 权限被拒绝使用 Excel 12.0 库和 VB6 打开 Excel 文件

    我以前曾在 VB6 应用程序中多次使用 Excel 但从未遇到过如此奇怪的问题 试图完成一些非常简单的事情 我正在尝试打开 Excel xls 或 xlsx 文件并读取值 正如您可能看到的那样 当我尝试打开该文件时 收到错误 70 权限被拒
  • 将 CSV 文件内容与 filecmp 进行比较并忽略元数据

    import filecmp comparison filecmp dircmp dir local dir server comparison report full closure 我想将本地计算机上保存的所有 CSV 文件与服务器上保
  • 引入输出语句时MiniZinc找不到解决方案

    我有一个用 minizinc 编写的简单模型 我使用 gecode 首先将其编译为 flat zinc 来解决它 作为输入 模型采用一些常量 数组和矩阵 二维数组的形式 模型的输出是另一个必须满足一些约束的二维矩阵 目标优化是最小化 目标
  • 我们可以将规范引用中未明确引用的内容应用到 C++ 标准吗?

    在 C 11 标准中 最接近的草案是 N3337 http www open std org jtc1 sc22 wg21 docs papers 2012 n3337 pdf 部分1 2 规范性引用文件 says 以下参考文件是必不可少的
  • 使用 CMake 将编译器标志附加到文件

    如何使用 cmake 将编译器标志 我想附加它 而不是覆盖其他标志 添加到单个翻译单元 我尝试过 set source files properties MyFile cpp PROPERTIES CMAKE CXX FLAGS msse4
  • Android Studio 没有显示任何错误?

    我不知道发生了什么事但是当我复制粘贴代码或写一些东西时 没有显示错误 See the picture below in which i copied a code but no imports yet But Android studio
  • python:使用多处理共享巨大的字典

    我正在使用多重处理处理存储在字典中的大量数据 基本上我所做的就是加载一些存储在字典中的签名 从中构建一个共享的 dict 对象 获取 Manager dict 返回的 代理 对象 并将此代理作为参数传递给具有在多处理中执行 只是为了澄清 s