在使用 pythran 取得第一个好结果之后,我尝试了 transonic 以从 jit 和类支持中受益。不幸的是,它没有按预期运行。
如果我使用@jit
装饰器,则编译和缓存装饰函数,但在代码的第一次运行期间不使用编译版本,而是由 python 处理函数。第一次运行后使用缓存版本。
如果我使用@boost
装饰器并运行transonic runmwe.py
在文件夹中创建编译版本__pythran__
,但运行脚本python runmwe.py
我收到以下警告,代码由 python 处理。
WARNING: Pythran file does not seem to be up-to-date:
<module '__pythran__.runmwe_920d6d0a5cd396436d463468328e997b' from '__pythran__/runmwe_920d6d0a5cd396436d463468328e997b.cpython-38-x86_64-linux-gnu.so'>
重新运行transonic runmwe.py
只会产生代码已经是最新的警告。
我是否错过了一些正确使用的配置,@jit
或者@boost
这是预期的行为,我以错误的方式使用跨音速?
使用 conda-forge 的软件: transonic
0.4.5
pythran 0.9.7
python 3.8.6
MWE:
import numpy as np
from transonic import jit,boost
#transonic def looping(float[])
@boost
def looping(np_array):
shape_x =np_array.shape[0]
for x in range(shape_x):
if np_array[x] < 0.5:
np_array[x] = 0
else:
np_array[x] = 1
return np_array
in_arr = np.random.rand(10**7)
looping(in_arr)