我正在建立一个框架来求解由方程组成的模型-很多。这是通过使用计算函数的高斯-塞德尔方法完成的。
在字符串中定义了一个返回计算函数的工厂函数。执行并返回工厂功能。
工厂功能返回计算功能。
计算函数用于求解方程。
使用@jit可以正常工作。但是,对于长型号,numba需要相当长的时间。因此,使用cache = True可能会很有用。
但是返回错误:
RuntimeError: cannot cache function 'make_los.<locals>.los0': no locator available for file '<string>'
我尝试设置NUMBA_CACHE_DIR
但这无济于事
显示问题的代码示例。
# -*- coding: utf-8 -*-
"""
Test of Numba cache
"""
import os
from numba import jit
os.environ["NUMBA_CACHE_DIR"] = "."
make = '''\
def make_los():
print('compile')
@jit("f8(f8)",cache=True)
def los0(a):
return 42.
return los0
'''
exec(make,globals()) # creates the los function
solve_funk = make_los()
print(solve_funk(2.))