如何允许 c printf 在 cython 单元格的 ipython 笔记本中打印?

How to allow c printf to print in ipython notebook in cython cell?

%%cython
from libc.stdio cimport printf
def test():
    printf('abc')

如果我 运行 test(),它不会打印任何东西。

目前我正在做一些愚蠢的事情:

cdef char s[80]
sprintf(s, 'something')
print s

在 cython 中使用 printf 的更好方法是什么?为什么不打印?

输出将打印在您的终端(控制台)运行 Jupyter 笔记本中。虽然不确定如何在 Jupyter 中显示它。

您可以使用 wurlitzer 包来捕获 C 级标准输出/标准错误并将其重定向到 IPython。

例如,在您的 Jupyter notebook 中包含以下代码块:

%load_ext Cython
%load_ext wurlitzer
%%cython
from libc.stdio cimport printf
def test():
    printf('abc')
test()
# prints "abc"