运行 Cython 得到错误 "Expected an identifier or literal"
Running Cython get the error "Expected an identifier or literal"
我在 Juypter 中 运行 cython 代码
%%cython
def g(int x):
return x ** 2 - x
%timeit g(100)
我得到了错误
Error compiling Cython file:
------------------------------------------------------------
...
def g(int x):
return x ** 2 - x
%timeit g(100)
^
------------------------------------------------------------
.ipython\cython\_cython_magic_8761e7cbf8d4d8c5fac6d16631958fb9.pyx:3:0: Expected an identifier or literal
但是如果我运行将两段代码分开
%%cython
def g(int x):
return x ** 2 - x
%timeit g(100)
我能得到答案
48.4 ns ± 0.136 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
我不知道是什么原因造成的
%%timeit
is a line magic 并且可以用作 单元魔术模式 或 线魔术模式 但需要两个不同的语法!
%%timeit
用作单元魔法,而%timeit
用作线魔法。
%timeit
将为写在同一行的表达式计时,而 %%timeit
将为整个单元格 运行。
所以现在我们可以看到你这个例子的问题了!使用 cell magic 不是正确的方法,您应该将它放在单元格的最顶部!当您需要进行一些设置和工作时,这很有用,但对于您的单个案例,line magic 版本应该足够了!
此外,您正在添加 %%cython
细胞魔法,这可能与 %%timeit
细胞魔法不兼容,所以要小心!
我在 Juypter 中 运行 cython 代码
%%cython
def g(int x):
return x ** 2 - x
%timeit g(100)
我得到了错误
Error compiling Cython file:
------------------------------------------------------------
...
def g(int x):
return x ** 2 - x
%timeit g(100)
^
------------------------------------------------------------
.ipython\cython\_cython_magic_8761e7cbf8d4d8c5fac6d16631958fb9.pyx:3:0: Expected an identifier or literal
但是如果我运行将两段代码分开
%%cython
def g(int x):
return x ** 2 - x
%timeit g(100)
我能得到答案
48.4 ns ± 0.136 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
我不知道是什么原因造成的
%%timeit
is a line magic 并且可以用作 单元魔术模式 或 线魔术模式 但需要两个不同的语法!
%%timeit
用作单元魔法,而%timeit
用作线魔法。
%timeit
将为写在同一行的表达式计时,而 %%timeit
将为整个单元格 运行。
所以现在我们可以看到你这个例子的问题了!使用 cell magic 不是正确的方法,您应该将它放在单元格的最顶部!当您需要进行一些设置和工作时,这很有用,但对于您的单个案例,line magic 版本应该足够了!
此外,您正在添加 %%cython
细胞魔法,这可能与 %%timeit
细胞魔法不兼容,所以要小心!