Videre
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
"""
|
||||
Separate module with function samples for serialization tests,
|
||||
to avoid issues with __main__.
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
from numba import jit
|
||||
from numba.core import types
|
||||
|
||||
|
||||
@jit((types.int32, types.int32))
|
||||
def add_with_sig(a, b):
|
||||
return a + b
|
||||
|
||||
@jit
|
||||
def add_without_sig(a, b):
|
||||
return a + b
|
||||
|
||||
@jit(nopython=True)
|
||||
def add_nopython(a, b):
|
||||
return a + b
|
||||
|
||||
@jit(nopython=True)
|
||||
def add_nopython_fail(a, b):
|
||||
object()
|
||||
return a + b
|
||||
|
||||
def closure(a):
|
||||
@jit(nopython=True)
|
||||
def inner(b, c):
|
||||
return a + b + c
|
||||
return inner
|
||||
|
||||
K = 3.0
|
||||
|
||||
from math import sqrt
|
||||
|
||||
def closure_with_globals(x, **jit_args):
|
||||
@jit(**jit_args)
|
||||
def inner(y):
|
||||
# Exercise a builtin function and a module-level constant
|
||||
k = max(K, K + 1)
|
||||
# Exercise two functions from another module, one accessed with
|
||||
# dotted notation, one imported explicitly.
|
||||
return math.hypot(x, y) + sqrt(k)
|
||||
return inner
|
||||
|
||||
@jit(nopython=True)
|
||||
def other_function(x, y):
|
||||
return math.hypot(x, y)
|
||||
|
||||
@jit(forceobj=True)
|
||||
def get_global_objmode(x):
|
||||
return K * x
|
||||
|
||||
import numpy as np
|
||||
import numpy.random as nprand
|
||||
|
||||
@jit(nopython=True)
|
||||
def get_renamed_module(x):
|
||||
nprand.seed(42)
|
||||
return np.cos(x), nprand.random()
|
||||
|
||||
|
||||
def closure_calling_other_function(x):
|
||||
@jit(nopython=True)
|
||||
def inner(y, z):
|
||||
return other_function(x, y) + z
|
||||
return inner
|
||||
|
||||
def closure_calling_other_closure(x):
|
||||
@jit(nopython=True)
|
||||
def other_inner(y):
|
||||
return math.hypot(x, y)
|
||||
|
||||
@jit(nopython=True)
|
||||
def inner(y):
|
||||
return other_inner(y) + x
|
||||
return inner
|
||||
|
||||
|
||||
# A dynamic function calling a builtin function
|
||||
def _get_dyn_func(**jit_args):
|
||||
code = """
|
||||
def dyn_func(x):
|
||||
res = 0
|
||||
for i in range(x):
|
||||
res += x
|
||||
return res
|
||||
"""
|
||||
ns = {}
|
||||
exec(code.strip(), ns)
|
||||
return jit(**jit_args)(ns['dyn_func'])
|
||||
|
||||
dyn_func = _get_dyn_func(nopython=True)
|
||||
dyn_func_objmode = _get_dyn_func(forceobj=True)
|
||||
Reference in New Issue
Block a user