我是cython的新手(现在只用于做一点hw)。我使用下面的代码在jupyter笔记本中查看它的总体思路。
%load_ext Cython
%%cython
def cfunc(int n):
cdef int a = 0
for i in range(n):
a += i
return a
print(cfunc(10))
但是,它只打印一次结果45。当我运行打印功能时,单元格不会显示45个人。
代码有问题吗?如何使单元格打印出的45与普通python代码完全相同?谢谢
运行cython时,引擎盖下会发生很多神奇的事情。在详细模式下调用magic时,可以看到部分内容,即cython--verbose:
b599dcf313706e8c6031a4a7058da2a2是%%cython
-单元格的sha1哈希,例如,需要它才能重新加载%%cython
-单元格(请参阅本文)
- 此文件经过cythonized并构建为名为cython\u magic\u b599dcf313706e8c6031a4a7058da2a2的c扩展名
- 导入此扩展-此时您的代码将打印45,并且此模块中的所有内容都将添加到全局命名空间中
当您再次执行该单元格时,上面的任何操作都不会发生:给定机器可以看到的sha哈希,该单元格已经执行并加载了,因此无需执行任何操作。只有当单元格的内容发生更改,因此其哈希值将不使用现金,而是执行上述3个步骤。
要强制执行上述步骤,必须将
--force
(或-f
)选项传递给%%cython
-magic-cell,即:
%%cython --force
...
# 45 is printed
然而,由于重新构建扩展相当耗时,人们可能更喜欢以下内容
%%cython
def cfunc(int n):
cdef int a = 0
for i in range(n):
a += i
return a
# put the code of __main__ into a function
def cython_main():
print(cfunc(10))
# execute the old main
cython_main()
现在在一个新的单元格中调用cython\u main()
,因此它会像普通python代码一样重新计算。
当我执行以下代码时,为什么分配给输出的变量名只在我第一次使用时打印......而不是每次使用时打印? 当我运行它时。。。这就是它看起来的样子 我的第一头渡渡鸟 我的第一段。 我的第二段。 我希望它看起来像这样 我的第一头渡渡鸟 我的第一段渡渡鸟 我的第二段。多多鸟
我是Jupyter笔记本电脑的新手,Jupyter笔记本电脑和JupyterLab的主要区别是什么,建议我选择最好的,以后应该使用。
问题内容: 我正在研究Jupyter Notebook,并希望通过使用Google GPU使其运行更快。我已经进行了一些研究并找到了解决方案,但是它对我没有用。 解决方案是: “最简单的方法是使用Connect to Local Runtime, 然后选择硬件加速器作为GPU,如Google Colab Free GPU Tutorial中所示 。” 我确实设法将googe colab连接到jup
每个人我最近在学习如何反应。正如这个链接所说,我学到了一个教训:react函数加载两次。但当我验证它时,我发现它确实加载了两次,但Chrome浏览器只打印了一次。我想知道为什么?这是我验证过的代码。 我认为铬应该混合。日志 1 App.js: 9我已经跑了1次!2pp.js: 9我已经跑了两次了! 我想知道为什么。非常感谢。
我试图使用liner_profiler库在jupyter笔记本与cython函数。它只工作了一半。我得到的结果只包括函数的第一行,没有分析结果。 对于分析结果,int onlt显示一行代码
所以我使用joblib来并行化一些代码,我注意到在jupyter笔记本中使用它时无法打印东西。 我尝试在ipython中使用相同的示例,效果非常好。 下面是一个在jupyter笔记本电脑中写入的最小(非)工作示例 所以我得到的输出为但没有打印任何内容。 我期望看到的(打印顺序在现实中可能是随机的): 您可以在笔记本进程的日志中看到打印。但我希望打印发生在笔记本上,而不是笔记本过程的日志。 我已经打