Python 不能拾取<;类型';功能'>;:pool.map()导致属性查找\内置\函数失败

Python 不能拾取<;类型';功能'>;:pool.map()导致属性查找\内置\函数失败,python,multiprocessing,Python,Multiprocessing,问题设置为: 有一个名为target的函数,我想使用pool.map()进行多处理 我正在使用多处理模块 似乎使用pool.map的函数必须是可序列化/可拾取的 我的目标函数是模块中的第一级函数 问题是: 目标函数中存在无法序列化的数据库连接 我无法确定这个数据库连接 我能做些什么来绕过这个问题并使用pool.map()吗?还是别的什么 我已尝试安装pathos软件包。但它的依赖性柴堆已经不能提供柏油球了。而且我的机器没有internet连接。是否可以在子进程中重新建立数据库连接?@mduran

问题设置为:

  • 有一个名为target的函数,我想使用pool.map()进行多处理

  • 我正在使用多处理模块

  • 似乎使用pool.map的函数必须是可序列化/可拾取的

  • 我的目标函数是模块中的第一级函数

  • 问题是:

  • 目标函数中存在无法序列化的数据库连接

  • 我无法确定这个数据库连接

  • 我能做些什么来绕过这个问题并使用pool.map()吗?还是别的什么


    我已尝试安装pathos软件包。但它的依赖性柴堆已经不能提供柏油球了。而且我的机器没有internet连接。

    是否可以在子进程中重新建立数据库连接?@mdurant谢谢您的回答。我不知道你的想法。你能提供更多的信息吗?或者这上面的链接。谢谢。我的意思是,您可以从原始连接详细信息(ip、DB、用户名、端口…)中设置游标(python DB api)、引擎(sqlalchemy)或任何内容。像postgres、mysql这样的现代数据库非常乐意同时从多个进程访问。
    Pool.map()
    使用
    Queue
    ,它不接受任何不可拾取的内容。您可以尝试使用
    Process()
    实现多处理,也可以将worker函数放入一个单独的Python中,并使用
    Pool.map()
    调用
    子流程.call
    执行Python文件。