Я пытался использовать numba для ускорения лямбда-функции , но мне не удалось это сделать.Похоже, лямбда не поддерживается numba.Поэтому я переписал лямбда-функцию как функцию def.Я строю неявную функцию f (x, y, z) = x ^ 2 + y ^ 2-z ^ 2 и некоторые другие, которые будут оцениваться только один раз после построения.xi, yi, zi предназначены для трансляции неявной функции.
def wrapperNode(xi,yi,zi,R):
@nb.jit(nopython=True)
def Node(x,y,z):
x = xi - x
y = yi - y
z = zi - z
return x**2 + y**2 - z**2
return Node
import time
for i in range(10):
Start = time.time()
Node = wrapperNode(i+1.0,i+2.0,i+3.0,i+4.0)
a = Node(1.0,2.0,3.0)
Final = time.time()
print(Final-Start)
Результат времени для каждого цикла:
0.137923002243042
0.14062094688415527
0.14144468307495117
0.1332840919494629
0.12716078758239746
0.14055514335632324
0.14062023162841797
0.1423487663269043
0.14061713218688965
0.1943662166595459
На самом деле это было намного медленнее, чем простая оценка функции узла вфункция обертки.Каждый раз, когда я изменял входные аргументы для функции-оболочки, компьютер должен компилировать функцию Node, если я оцениваю ее.Так что никакого ускорения вообще нет ... Я ищу способ ускорить всю функцию оболочки.Если у кого есть идеи, пожалуйста, помогите.Спасибо!