使用Numba加速Python cod时引发的TypeError

2024-04-25 21:05:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Numba的@jit修饰符来优化我的函数和nopython=True选项。当我删除这个选项时,我的代码运行得很好,但是我读到启用这个选项会大大加快代码的速度。在

但是,我得到了以下回溯和错误:

Traceback (most recent call last):
  File "C:\Users\dis_YO_boi\Documents\Programming\Python\Base3DSolver4.py", line 83, in <module>
    soln = odeint(f, y0, time, mxstep = 5000)
  File "C:\Anaconda3\lib\site-packages\scipy\integrate\odepack.py", line 153, in odeint
    ixpr, mxstep, mxhnil, mxordn, mxords)
  File "C:\Anaconda3\lib\site-packages\numba\dispatcher.py", line 172, in _compile_for_args
    return self.compile(sig)
  File "C:\Anaconda3\lib\site-packages\numba\dispatcher.py", line 350, in compile
    flags=flags, locals=self.locals)
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 644, in compile_extra
    return pipeline.compile_extra(func)
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 361, in compile_extra
    return self.compile_bytecode(bc, func_attr=self.func_attr)
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 370, in compile_bytecode
    return self._compile_bytecode()
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 631, in _compile_bytecode
    return pm.run(self.status)
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 251, in run
    raise patched_exception
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 243, in run
    res = stage()
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 458, in stage_nopython_frontend
    self.locals)
  File "C:\Anaconda3\lib\site-packages\numba\compiler.py", line 759, in type_inference_stage
    infer.propagate()
  File "C:\Anaconda3\lib\site-packages\numba\typeinfer.py", line 510, in propagate
    raise errors[0]
numba.errors.TypingError: Failed at nopython (nopython frontend)
Internal error at <numba.typeinfer.SetItemConstraint object at 0x0000000007C082B0>:
--%<-----------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\numba\typeinfer.py", line 111, in propagate
    constraint(typeinfer)
  File "C:\Anaconda3\lib\site-packages\numba\typeinfer.py", line 377, in __call__
    index=it, value=vt):
  File "C:\Anaconda3\lib\site-packages\numba\typing\context.py", line 149, in resolve_setitem
    return self.resolve_function_type("setitem", args, kws)
  File "C:\Anaconda3\lib\site-packages\numba\typing\context.py", line 97, in resolve_function_type
    res = defn.apply(args, kws)
  File "C:\Anaconda3\lib\site-packages\numba\typing\templates.py", line 155, in apply
    sig = generic(args, kws)
  File "C:\Anaconda3\lib\site-packages\numba\typing\arraydecl.py", line 158, in generic
    raise TypeError("Cannot modify value of type %s" %(ary,))
TypeError: Cannot modify value of type readonly array(float64, 2d, C)
--%<-----------------------------------------------------------------

File "Base3DSolver4.py", line 61

这是什么意思?我该怎么解决它?

这是我的代码:

^{pr2}$

谢谢你的帮助。在


Tags: inpyselfreturncompilerlibpackagestype
1条回答
网友
1楼 · 发布于 2024-04-25 21:05:13

您正试图修改一个全局变量(即ydot),该函数是在nopython模式下jit的Numba函数。This is not supported。请更改内容,使ydot成为函数的参数,或者不要在nopython模式下编译。在

相关问题 更多 >