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

niv*_*niv 6 stdout flush python-3.x numba

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

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

Soc*_*cob 5

您可以使用objmode()上下文管理器numba来使用\xe2\x80\x99s中不支持的代码nopython

\n
import numba\n\n@numba.njit\ndef f(x):\n    x *= 2\n    with numba.objmode():\n        print(x, flush=True)\n    return x + 1\n\nprint(f\'f(7) = {f(7)}\')\n# 14\n# f(7) = 15\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

注意:我不\xe2\x80\x99t认为这个问题最初在2017年提出时是可用的。

\n