घोंसला कैसे करें मैं समझने की कोशिश कर रहा हूं कि @jitclass सजावट नेस्टेड कक्षाओं के साथ कैसे काम करता है। मैंने दो डमी कक्षाएं लिखी हैं: फीफी और टोटो फीफी में एक टोटो विशेषता है। दोनों वर्गों में @jitclass सजावट है लेकिन संकलन विफल रहता है। कोड यह रहा:कैसे numba jitclass
fifi.py
from numba import jitclass, float64
from toto import toto
spec = [('a',float64),('b',float64),('c',toto)]
@jitclass(spec)
class fifi(object):
def __init__(self, combis):
self.a = combis
self.b = 2
self.c = toto(combis)
def mySqrt(self,x):
s = x
for i in xrange(self.a):
s = (s + x/s)/2.0
return s
toto.py:
from numba import jitclass,int32
spec = [('n',int32)]
@jitclass(spec)
class toto(object):
def __init__(self,n):
self.n = 42 + n
def work(self,y):
return y + self.n
स्क्रिप्ट कोड की शुरूआत:
from datetime import datetime
from fifi import fifi
from numba import jit
@jit(nopython = True)
def run(n,results):
for i in xrange(n):
q = fifi(200)
results[i+1] = q.mySqrt(i + 1)
if __name__ == '__main__':
n = int(1e6)
results = [0.0] * (n+1)
starttime = datetime.now()
run(n,results)
endtime = datetime.now()
print("Script running time: %s"%str(endtime-starttime))
print("Sqrt of 144 is %f"%results[145])
जब मैं स्क्रिप्ट चलाने, मैं प्राप्त करें [...]
TypingError: Untyped global name 'toto' File "fifi.py", line 11
ध्यान दें कि अगर मैं 'फीटी' में 'toto' के किसी भी संदर्भ को हटा देता हूं, तो कोड ठीक काम करता है और मुझे x16 गति मिलती है धन्यवाद।