本文主要是介绍Python multiprocessing scipy optimize leastsq线程安全问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
错误状态描述:单线程运行时,没有任何错误,多线程运行时,时不时收到SystemError: null argument to internal routine。通过traceback确认是optimize.leastsq的问题!
SystemError: null argument to internal routine
Traceback (most recent call last):
File “autoflow/look_alike.py”, line 175, in choose
delta1 = math_utils.least2_coef(xlist, ylist, p0=1, mode=1)[0]
File “utils/math_utils.py”, line 39, in least2_coef
plesq = optimize.leastsq(residuals, p0, args=(np.array(ylist), np.array(xlist)))
File “/usr/local/lib/python2.7/site-packages/scipy/optimize/minpack.py“, line 387, in leastsq
gtol, maxfev, epsfcn, factor, diag)
error: Internal error constructing argument list.
参考下面几篇资料,基本可以确定是scipy.optimize中的方法不是线程安全的,具体导致leastsq挂掉的原因有可能最终能追溯到curve_fit。根据stackoverflow中的说法,加一个线程锁应该可以解决问题。
这篇关于Python multiprocessing scipy optimize leastsq线程安全问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!