- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有两个文件:
x.py
class BF(object)
def __init__():
.
.
def add(self,z):
.
.
y.py
from y import BF
def FUNC((a,b,bf))
.
.
bf.add(x)
.
.
return bf
.
.
if __name__ == '__main__':
pool = multiprocessing.Pool(3)
for i in range(len(sl)):
bf_set.append(BF())
results = pool.map(FUNC,zip(sl, itertools.repeat(aa), bf_set))
我也尝试在 FUNC 中定义 BF,但我仍然得到:
PicklingError: Can't pickle <type 'instancemethod'>: attribute lookup __builtin__.instancemethod failed
我读过一些相关问题的帖子,但他们在类中有自己的 pool.map() ,所以这些解决方案不能应用于这个问题(我猜)。
有什么想法吗?
最佳答案
我将基本上使用上面的内容,但将其转换为工作代码。如果使用dill
,序列化没有问题。我正在使用 multiprocessing
的 fork 叫pathos.multiprocessing
,它使用 dill
而不是pickle
.
>>> def FUNC((a,b,bf)):
... z = a+b
... bf.add(z)
... return bf
...
>>> class BF(object):
... def add(self, z):
... self.z += z
... def __init__(self):
... self.z = 0
...
>>> from pathos.multiprocessing import ProcessingPool as Pool
>>> pool = Pool()
>>>
>>> f = BF()
>>> f.add(1)
>>> f.z
1
>>>
>>> FUNC((0,1,f))
<__main__.BF object at 0x10d387f50>
>>>
>>> FUNC((0,1,f)).z
2
>>>
>>> sl = [BF() for i in range(10)]
>>> results = pool.map(FUNC, zip(range(len(sl)), range(len(sl)), sl))
>>> [bf.z for bf in results]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
这有效,因为 pathos
使用dill
,它几乎可以序列化 python 中的任何内容。
>>> import dill as pickle
>>> pickle.loads(pickle.dumps(bf.add))
<bound method BF.add of <__main__.BF object at 0x10d383950>>
>>> pickle.loads(pickle.dumps(BF.add))
<unbound method BF.add>
获取pathos
和dill
在:https://github.com/uqfoundation
关于python - 多重处理:池和 pickle 错误 - Pickling 错误:无法 pickle <type 'instancemethod' >:属性查找 __builtin__.instancemethod 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396451/
我有两个文件: x.py class BF(object) def __init__(): . . def add(self,z): . . y.py from y
我正在尝试通过类变量调用外部函数。以下是我的真实代码的简化: def func(arg): print(arg) class MyClass(object): func_ref = N
我试图在另一个实例方法的事件处理程序中调用实例方法,但我得到函数未定义,我认为这是因为在事件处理程序中“this”指的是 DOM 元素而不是实例: function MyObject(somethin
html 中的多个复选框,如果选择了 None,我希望我的用户重定向到同一页面。 我应该通过 Javascript 执行此操作吗?或者 if request.method == 'POST':
我不断收到此错误: TypeError: 'instancemethod' object has no attribute '__getitem__' 根据我对 django 网站的特殊看法,我正在玩
我遇到了pickle的问题,代码是: import cPickle class A(object): def __init__(self): self.a = 1 de
我正在尝试创建一个 python 类来使用我的 Raspberry Pi 控制步进电机。它主要有效,但是每当我将列表定义为类变量时,我都会收到“'instancemethod' object has
我正在向 sequelize 模型添加一个实例方法。根据the documentation我应该能够引用 this.name,但我能看到的唯一值是 this.dataValues.name。我没有理由
我爱ActiveSupport::Concern . 它使向您的类添加功能变得容易,而且语法很好。 无论如何,在 Rails 3.2 中,InstanceMethods 模块已被弃用。如果我理解正确,
我正在使用sequelize 连接到mysql 数据库进行开发。我有一个名为 Dealer 的模型: 'use strict'; module.exports = function(sequelize
在我们的代码库中,SWIG 结合了 Python 和 C++。 C++ 类有时会像这样被赋予 Python 扩展: %pythoncode %{ def DiscreteKey_baseData(se
我有一个如下所示的数据框: id ttp var cap_util wip 0 ADLL 3.333333 6.003725e-
我正在模拟循环算法,下面列出的代码给我错误 RR.Przesuniecie[Oczekujace_procesy] TypeError: 'instancemethod' object is unsu
我对 python 和线程还很陌生。我正在尝试编写一个使用线程和队列的程序,以便使用凯撒密码加密 txt 文件。当我单独使用加密函数时,它本身运行良好,但在我的程序中使用它时出现错误。错误从这一行开始
在调试来自 https://github.com/haydnw/AirPi/blob/master/outputs/ubidots.py 的 AirPi 代码时,我遇到了输出期间出现异常:“insta
HTML java c network python list_categories = reques
我想做这样的事情: class X: @classmethod def id(cls): return cls.__name__ def id(self):
所以开始我对 Node.js 的所有事物的冒险。我正在尝试学习的工具之一是 Sequelize。所以我将开始我想做的事情: 'use strict'; var crypto = require('cr
我在文件中创建了一个函数并使用 export function foo(params...) { // do something } 在模型的初始化中,我以这种方式导入函数: import { fo
我有一个类 (Bar),它实际上有自己的状态和回调,并被另一个类 (Foo) 使用: class Foo(object): def __init__(self): sel
我是一名优秀的程序员,十分优秀!