You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numba在Jupyter Notebook中打印缓冲,如何设置无缓冲输出?

Numba在Jupyter Notebook中打印缓冲问题的解决方法

在Jupyter环境下,被@numba.njit装饰的函数内部print输出会被缓冲,直到函数执行完毕或内核中断才一次性显示,而终端中正常实时输出——这是因为Jupyter的输出流默认采用块缓冲,和终端的行缓冲机制不同。以下是几种解决方式:

方法1:在Numba函数内强制刷新输出

利用Numba提供的底层运行时接口,每次print后强制刷新标准输出流:

import numba
from numba.core.runtime import rtsys

@numba.njit
def test_print():
    for i in range(100000):
        x = sum([j for j in range(i)])
        if i % 10000 == 0:
            print("step")
            print(x)
            rtsys.set_flush_stdout(True)  # 强制刷新输出缓冲区

test_print()

方法2:全局开启无缓冲输出

在Notebook开头执行魔法命令,全局设置Python无缓冲输出:

%env PYTHONUNBUFFERED=1

执行该命令后再运行你的Numba函数,所有输出都会实时刷新。

补充说明

终端中输出正常是因为终端属于交互式tty设备,默认采用行缓冲,输出换行时自动刷新;而Jupyter的输出流是非tty类型,默认使用块缓冲,只有当缓冲区填满或程序结束时才会输出内容。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:30:18