在numba jitted函数中刷新标准输出

时间:2017-05-25 16:41:33

标签: python-3.x stdout flush numba

显然numba既不支持sys.stdout.flush也不支持print("", flush=True)

在jitted函数中刷新“打印”的好方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用 objmode() context manager 来使用 numbanopython JIT 模式不支持的代码:

import numba

@numba.njit
def f(x):
    x *= 2
    with numba.objmode():
        print(x, flush=True)
    return x + 1

print(f'f(7) = {f(7)}')
# 14
# f(7) = 15

如文档中所述,由于涉及的开销,这应该仅在性能关键的代码部分之外使用。

注意:我认为这个问题在 2017 年最初提出时不可用。