Python:BigFloat+;多处理

Python:BigFloat+;多处理,python,python-multiprocessing,bigfloat,Python,Python Multiprocessing,Bigfloat,我正在尝试将一系列使用bigfloat的计算并行化。然而,有一个错误 发送结果时出错:'[BigFloat.exact('1.0000000',精度=20)]。原因:“TypeError('self.\u值无法转换为Python对象进行酸洗”)” 我要重现的错误是 from bigfloat import * from multiprocessing import Pool def f(x,a,b,N): with precision(20): X=BigFloat(x

我正在尝试将一系列使用
bigfloat
的计算并行化。然而,有一个错误

发送结果时出错:'[BigFloat.exact('1.0000000',精度=20)]。原因:“TypeError('self.\u值无法转换为Python对象进行酸洗”)”

我要重现的错误是

from bigfloat import *
from multiprocessing import Pool

def f(x,a,b,N):
    with precision(20):
        X=BigFloat(x)
        for i in range(N):
            X = a*X*X-b
        return X

if __name__ == '__main__':
    pool = Pool(processes=2)
    out1,out2 = pool.starmap(f,[(1,2,1,3),(2,2,2,2)])
(功能本身并不重要)。如果我不使用
bigfloat
,那么一切都很好。因此,它肯定是
多处理
大浮点
之间的某种交互


因此,我认为,
多处理
在保存BigFloat对象时遇到了问题。我似乎无法仅“提取”BigFloat抛出的值。如何解决此问题?

显然
bigfloat
不支持酸洗,我在执行
pickle.dumps(bigfloat(1))时会遇到相同的错误。

注意这是需要完成的

作为一种解决方法,为什么不在进程之间传输时转换为字符串呢?i、 e.将
f
更改为
return str(X)
,然后让其他例程根据需要将字符串解析为
BigFloat
s

否则,您可以编写一些代码来支持这一点,并将其提交给项目