我正在尝试并行化一系列使用bigfloat
. 但是,有错误
Error sending result: '[BigFloat.exact('1.0000000', precision=20)]'. Reason: 'TypeError('self._value cannot be converted to a Python object for pickling')'
我 MWE 重现错误是
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
,那么一切都很好。multiprocessing
所以,肯定是和之间的某种交互bigfloat
。
所以,我想这multiprocessing
在保存 BigFloat 对象时遇到了麻烦。我似乎无法仅“提取” BigFloat 抛出的值。我该如何解决这个问题?