显然numba
既不支持sys.stdout.flush
也不支持print("", flush=True)
。
在jitted函数中刷新“打印”的好方法是什么?
答案 0 :(得分:1)
您可以使用 objmode()
context manager 来使用 numba
的 nopython
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 年最初提出时不可用。