栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么jupyter笔记本只打印一次cython结果?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么jupyter笔记本只打印一次cython结果?

运行时,

%%cython
魔术发生在引擎盖下。在详细模式下调用魔术时,可以看到其中的一部分,即
%%cython --verbose

  1. _cython_magic_b599dcf313706e8c6031a4a7058da2a2.pyx
    生成一个名为的文件。
    b599dcf313706e8c6031a4a7058da2a2
    %%cython
    -cell的sha1-hash,例如,它是重新加载
    %%cython
    -cell所必需的(请参阅此SO-post)。
  2. 该文件被cython化并构建为名为的c扩展名
    _cython_magic_b599dcf313706e8c6031a4a7058da2a2
  3. 此扩展名已导入-这是您的代码打印45的时刻,此模块中的所有内容都添加到了全局名称空间中。

当您再次执行该单元格时,以上内容均不会发生:给定机器可以看到的哈希值,该单元格已被执行并加载-
因此无所事事。仅当单元格的内容发生更改并因此更改其哈希值时,才会使用现金,而是执行上述3个步骤。

要强制执行上述步骤,必须将

--force
(或
-f
)选项传递给
%%cython
-magic-cell,即:

%%cython --force...# 45 is printed

但是,由于重新构建扩展非常耗时,因此可能更喜欢以下内容

%%cythondef cfunc(int n):  cdef int a = 0  for i in range(n):    a += i  return a# put the pre of __main__ into a functiondef cython_main():   print(cfunc(10))# execute the old maincython_main()

现在调用

cython_main()
一个新的单元格,因此它以与普通python代码相同的方式重新评估。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419906.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号