当前位置: 首页 > 知识库问答 >
问题:

在Jupyter cdef运行Cython

钮轩昂
2023-03-14

我正在寻找合并一些cython来加速我的代码。我在Jupyter中运行cython代码时遇到问题。

牢房1:

%%cython
cdef fuc():
    cdef int a = 0
    for i in range(10):
        a += i
        print(a)

单元格2:

fuc()

错误:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-48-10789e9d47b8> in <module>()
----> 1 fuc()

NameError: name 'fuc' is not defined

但如果我这样做,效果很好。

%%cython
def fuc():
    cdef int a = 0
    for i in range(10):
        a += i
        print(a)

看起来cdef在Jupyter中的使用方式不同,我如何在Jupyter笔记本中使用cdef?

共有2个答案

澹台权
2023-03-14

如何在Jupyter笔记本中使用cdef?

尝试将cdef更改为cpdef。

罗乐意
2023-03-14

cdef函数只能从Cython调用,不能从Python调用。留档说

在Cython模块中,Python函数和C函数可以自由调用,但只有Python函数可以通过解释的Python代码从模块外部调用。

(已经说明了“C函数”由cdef定义,而“Python函数”由def定义)

改用Cython中的def函数。它仍然是由Cython编译的。您仍然可以在您的def函数中键入cdef。

 类似资料:
  • 我想在服务器上呈现d3图表。我有三个选择:节点、幻影和纳肖恩。 我更喜欢Nashorn,因为我的API是Scala Play,我不想管理另一个进程。(部署、加载、排队等) 所以现在我需要让JSDom在Nashorn中工作,这样D3将有一些东西可以渲染。 到目前为止,这是可行的,但我不知道如何添加jsdom

  • Hi我正在使用xslt转换器和xsl文件,我正在使用函数ex: date-time(),它在Anypoint Studio中运行,但当我尝试在cloud dHub中运行时,它会抛出错误 无法找到名为{http://exslt.org/dates-and-times}date-time()的匹配0参数函数。没有本地名称date-time的Saxon扩展函数(net.sf.saxon.trans.XP

  • 我正在尝试执行这个代码是pycharm 但我总是犯这个错误 但我可以使用terminal运行相同的代码

  • 我得到 它不包含我在NetBeans中使用的jdk的路径。我没有找到一种方法告诉Java我想使用另一个jdk,所以我尝试了不使用: 运行特定主文件的示例 在java.lang.class.PrivateGetMethodRecursive(class.java:3048) 在java.lang.class.GetMethod0(class.java:3018) 在java.lang.class.G

  • 问题内容: 有没有办法在Java应用程序中运行此命令行? 我可以用命令运行它,但是我不能在Java中运行它。 问题答案: