我使用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}$谢谢你的帮助。在
您正试图修改一个全局变量(即
ydot
),该函数是在nopython
模式下jit的Numba函数。This is not supported。请更改内容,使ydot
成为函数的参数,或者不要在nopython
模式下编译。在相关问题 更多 >
编程相关推荐