Python多处理,无法pickle thread.lock(pymongo)

2024-02-16

我有一个具有以下方法的类:

def get_add_new_links(self, max_num_links):
    self.get_links_m2(max_num_links)
    processes = mp.cpu_count()
    pool = mp.Pool(processes=processes)
    func = partial(worker, self)
    with open(os.path.join(self.report_path, "links.txt"), "r") as f:
        reports = pool.map(func, f.readlines())
    pool.close()
    pool.join()

where get_links_m2是创建文件“links.txt”的另一种方法。该工人是:

def worker(obje, link):
    doc, rep = obje.get_info_m2(link)
    obje.add_new_active(doc, sure_not_exists=True)
    return rep

方法get_info_m2访问该链接并提取一些信息。方法add_new_active将信息添加到 MongoDB。

我的代码可能有什么问题?当我运行它时,我收到此错误(和回溯):

文件“controller.py”,第 234 行,在 get_add_new_links 中

reports = pool.map(func, f.readlines())   File "/home/vladimir/anaconda3/lib/python3.5/multiprocessing/pool.py", line

260,在地图上

return self._map_async(func, iterable, mapstar, chunksize).get()   File "/home/vladimir/anaconda3/lib/python3.5/multiprocessing/pool.py",

第 608 行,在 get 中

raise self._value   File "/home/vladimir/anaconda3/lib/python3.5/multiprocessing/pool.py", line

385,在_handle_tasks中

put(task)   File "/home/vladimir/anaconda3/lib/python3.5/multiprocessing/connection.py",

第 206 行,发送中

self._send_bytes(ForkingPickler.dumps(obj))   File "/home/vladimir/anaconda3/lib/python3.5/multiprocessing/reduction.py",

50号线,在垃圾场

cls(buf, protocol).dump(obj) TypeError: can't pickle _thread.lock objects

如中所述the docs http://api.mongodb.com/python/current/faq.html#using-pymongo-with-multiprocessing:

切勿这样做:

client = pymongo.MongoClient()

# Each child process attempts to copy a global MongoClient
# created in the parent process. Never do this.
def func():
  db = client.mydb
  # Do something with db.

proc = multiprocessing.Process(target=func)
proc.start()

相反,必须在工作函数内部初始化客户端。

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

Python多处理,无法pickle thread.lock(pymongo) 的相关文章

  • App Engine 上的 Django 与 webapp2 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • Python,Google Places API - 给定一组纬度/经度查找附近的地点

    我有一个由商店 ID 及其纬度 经度组成的数据框 我想迭代该数据框 并使用 google api 为每个商店 ID 查找附近的关键地点 例如输入 Store ID LAT LON 1 1 222 2 222 2 2 334 4 555 3
  • Python3将模块从文件夹导入到另一个文件夹

    我的结构字典是 mainFolder folder1 init py file1 py file2 py folder2 init py file3 py file4 py setup py init py 我需要将 file4 py 从f
  • 可升级读锁的优点?

    我想知道使用可升级读锁与执行这些步骤相比有什么优势 获取读锁 检查条件以查看是否需要进行写锁定 释放读锁 采取写锁定 执行更新 释放写锁 与获取可升级读锁相比 执行上述步骤的一个明显缺点是 步骤 3 和步骤 4 之间存在一个时间窗口 其中另
  • 如何用函数记录一个文件?

    我有一个带有函数 lib py 但没有类的python 文件 每个函数都有以下样式 def fnc1 a b c This fonction does something param a lalala type a str param b
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 数据损坏 C++ 和 Python 之间的管道

    我正在编写一些代码 从 Python 获取二进制数据 将其通过管道传输到 C 对数据进行一些处理 在本例中计算互信息度量 然后将结果通过管道传输回 Python 在测试时 我发现如果我发送的数据是一组尺寸小于 1500 X 1500 的 2
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • 如何有效地比较 pandas DataFrame 中的行?

    我有一个 pandas 数据框 其中包含雷击记录以及时间戳和全球位置 格式如下 Index Date Time Lat Lon Good fix 0 1 20160101 00 00 00 9962692 7 1961 60 7604 1
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • Javascript 调用和应用函数仅在第一个参数上调用?

    编辑 这个问题是由于我的误解而提出的 请谨慎行事 因为阅读它可能会浪费您的时间 我想call and apply将执行给定一组参数的函数 但我得到的测试结果令人困惑 看我的测试代码 window z 0 function window z
  • C++ 类中的 OpenCV 轨迹栏回调

    我有一个关于在使用 C 中的类时如何定义 OpenCV 中轨迹栏回调的问题 当我定义轨迹栏时 假设在 cpp 类的构造函数方法中如何定义回调 我一直在尝试使用函数指针 但没有成功 我想我一定做错了什么 这是我的头文件 class Slide
  • 确定 NHibernate 中实体字段是否发生更改

    我有一个电话需要确定字段是否已更改 但是使用该实体 id 调用 get 返回相同的实体而不是之前的版本 Entity e Dao Get id At this point e Field is X e Field y Dao Save e
  • jQuery .val 更改不会更改输入值

    我有一个 HTML 输入 其值中有一个链接
  • 从模型数据生成 XML 文件

    我需要编写模型数据 CharField仅 s 到 XML 文件以包含 flash 文件的数据 我对此很陌生 并且我对在 django 中执行此操作的过程有点不清楚 我正在创建一个 xml 文件 然后将文本数据写入该文件 与 csv 模块所做
  • 如何运行命令强制 docker-machine 在 Windows 10 Home 中创建具有特定地址的虚拟机?

    我一直在关注这个问题来强制 docker machine 创建具有特定地址的虚拟机有没有办法强制 docker machine 创建具有特定 IP 的虚拟机 https stackoverflow com questions 3433621
  • jQuery UI Datepicker onchange 事件问题

    我有一个 JS 代码 当您更改字段时 它会调用搜索例程 问题是我找不到任何在 Datepicker 更新输入字段时触发的 jQuery 事件 由于某种原因 当 Datepicker 更新字段时不会调用更改事件 当日历弹出时 它会改变焦点 所
  • .git 文件夹不包含什么?

    来自git site http git scm com book en v2 Git Internals Plumbing and Porcelain 强调我的 当您在新目录或现有目录中运行 git init 时 Git 会创建 git 目
  • iOS应用程序发布-以不同作者姓名发布

    我一直在家庭成员 Apple 开发者帐户下开发和测试 iPhone 应用程序 他支付了该帐户的费用 并将其注册在他的公司名下 当需要发布时 它会出现在应用商店 以及发布作者姓名的其他地方 中 以他的名字还是他的公司名称 这可以改变吗 是否可
  • wordCounts.dstream().saveAsTextFiles("本地文件系统路径", "txt");不写入文件

    我正在尝试将 JavaPairRDD 写入本地系统中的文件中 代码如下 JavaPairDStream
  • 从 Joomla 3 中的 CSV/Excel 文件导入用户

    我需要在 Joomla 3 2 系统中创建大约 100 个用户 有没有一种方法可以自动完成此操作且成本不高 我认为最好的组件是这样的 CSV 改进 http www csvimproved com http www csvimproved
  • 当两个图像碰撞时如何生成片尾画面?

    当两个图像碰撞时如何生成片尾画面 我正在制作一个带有火柴人的应用程序 你可以使用非常灵敏的加速度计来移动 因此 如果它达到这些峰值 UIImages 它将生成最终屏幕 如何让应用程序检测到这种碰撞 然后生成结束屏幕 我确信您知道这两个图像的
  • CSS3 转换与 Javascript 后备

    是否有一个 javascript 框架可以使用 CSS3 转换来实现更改不透明度或移动元素等效果 但如果不支持 则会回退到使用 javascript setInterval setTimeout 查看 YUI 3 Transition 模块
  • iOS 自定义表格视图单元格在编辑模式下调整大小

    编辑时UITableView红色圆形按钮和删除按钮与自定义单元格重叠 我们如何调整自定义单元格的大小 为红色圆形按钮和删除按钮留出空间 使用此代码 您可以根据编辑单元格的方式和所处阶段来执行不同的任务 我对代码进行了大量注释 因为我花了很长
  • 在 Twitter Bootstrap 中,如何解除模式对话框关闭事件的绑定?

    我有一个函数绑定到隐藏模式对话框的操作 我使用的代码类似于已接受的答案this https stackoverflow com questions 8363802 bind a function to twitter bootstrap m
  • 如何在 Excel 中绕过 64k 行限制

    我希望允许用户操作可能有多达 400 000 行的表 每行约 200 个字符 最大数据总量为 80MB 作为第一个近似值 我正在考虑以某种方式为用户提供一个 csv 文件以粘贴到电子表格中 首先 尝试这样的事情是否有实际意义 例如 一个电子
  • Flutter:在底部导航栏上显示模态底部表单/替换底部导航栏(无障碍)

    我正在尝试为我自己的 Flutter 应用程序复制一些类似于 Google 地图的功能 同样基于地图 我希望用户能够选择兴趣点并可以选择导航到该位置 当他们点击 导航 时 我希望底部工作表出现在现有底部导航栏的位置 或顶部 用于基于选项卡的
  • 放大画布而不修改特定子控件的大小

    所以我意识到我正在冒险超出 Canvas 的预期用途 并且可能不得不想出一个更加手动的解决方案 然而 由于在 WPF 方面没有太多经验 我希望可能有一些解决方案可以让我继续使用 Canvas 控件及其免费提供的功能 该问题围绕用于放大和缩小
  • C# 项目的目标是“.Net Framework,版本=v4.5”,该计算机未安装[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 今天下午我正在使用 Windows 8 上安装的 VS 2012 开发一个 C 项目 它运行良好 我在回家之前将代码上传到 TFS 但是当我
  • Python多处理,无法pickle thread.lock(pymongo)

    我有一个具有以下方法的类 def get add new links self max num links self get links m2 max num links processes mp cpu count pool mp Poo