为什么用Numba编译代码时,此while循环为什么不执行?

时间:2020-07-26 22:07:21

标签: python python-3.x nan numba

我有一小段这样的代码:

recvfrom

令人惊讶的是,该打印从未执行。

Numba表示支持math.isnan:https://numba.pydata.org/numba-doc/latest/developer/autogen_math_listing.html#math.isnan

因此,我尝试使用@njit def looptest(): value0 = np.NaN while math.isnan(value0): print('Nan 2: ', math.isnan(value0)) break ,据说它也受支持。结果相同:循环永远不会执行,只有在用Numba编译时才执行。如果我禁用JIT编译,则可以正常打印。

然后我添加了一些调试信息:

cmath

我发现,即使使用Numba进行编译,@njit def looptest(): value0 = np.NaN print('Nan 1: ', cmath.isnan(value0)) print(value0) while cmath.isnan(value0): print('Nan 2: ', cmath.isnan(value0)) break 似乎也可以正确解析为True:

isnan

但是,令我惊讶的是,使用Numba编译时,while循环内的第二个打印不执行。

我尝试使用Nan 1: True nan NUMBA_OPT=1减少优化-结果相同。

这是怎么回事?如何编写此代码,以便无论是否使用Numba编译,while循环都将执行相同的代码?

0 个答案:

没有答案