在Google Colab笔记本中从Cython代码调用Python函数

达斯·卡瓦德(DarthCavader)

我正在使用Google Colab笔记本。我在同一笔记本中使用Cython编写了一个特定的,计算量大的代码。在这段代码中,我想调用一个函数(在同一笔记本的另一个单元格中用Python定义)。

现在,该功能已与我的其余纯Python代码高度集成,并且无法为Cython重写和重新定义功能。

我的问题是:如何从另一个在Cython中编译的单元中调用用Python编写的函数?

我已经看过的链接:使用cython从C调用带有python导入的python文件

ad

通常,您会将整个功能放入模块中,然后将其导入%%cython-cell中。

另一种不太干净的方法(但在笔记本的情况下可能可以接受)是从导入的__main__,例如:

[1]: def foo():
         print("I'm main foo")

接着:

[2]: %%cython
     def usefoo():
         from __main__ import foo
         foo()

现在:

[3]: usefoo()
I'm main foo

另一个变体是foo__main__略有不同的导入

[2]: %%cython
     from __main__ import foo
     def usefoo2():
         foo()

有两个主要区别:

  1. 如果foo尚未定义__main__,则第二个单元%%cython将失败。如果foo在调用函数期间未定义或不再定义第一个版本,它将失败usefoo
  2. 如果foo在中更改__main__,则第一个版本将使用当前版本,而第二个版本将始终使用%%cython-cell生成之时的版本%%cython由于缓存,它可能与-cell运行的时间不同)。这可能会令人困惑。

从长远来看,这种方式非常令人困惑和困惑,因此在短暂的试用阶段之后,我将使用专用模块更改为更具可持续性的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Google的Colab笔记本中,如何从Python文件中调用函数?

在Python中嵌入Matplotlib动画(Google Colab笔记本)

Google Colab:打开Python笔记本时API错误?

在Google Colab笔记本中启动Dash应用

如何从Google Colab笔记本的“ .py”文件中运行Python脚本?

在 Google Colab 上的 R 笔记本中安装 python 库

如何在 Google Colab 中的笔记本中显示图像(如在 Anacondan Jupyter Notebook 中)?

在colab笔记本中的Google驱动器中定义文件的路径

如何从Google Colab笔记本的单元格中删除表格?

如何打开保存在 Google Colab 文件中的笔记本

在Google Colab研究笔记本中读取Shell脚本结果

Google Colab 笔记本预览(缩略图)未在云端硬盘中更新

Google Colab中jupyter笔记本的所有单元格输出消失

为什么Google Colab引发在csv和jupyter笔记本中无法读取的错误?

将Google Colab笔记本转换为PDF / HTML?

Google colab笔记本上的Corgi模式是什么?

Google Colab - 无法打开任何笔记本

如何为 R 打开新的 Google Colab 笔记本?

如何在Google Cloud Datalab的另一个笔记本中执行python笔记本

本地主机拒绝连接到调用Google API的databricks笔记本中

Google Colab Pro错误:无法识别的运行时“ tensorflow”;默认为“ python3”笔记本设置

如何从Colab笔记本中提取Google Cloud Storage存储桶中的tar.gz文件?

如何直接从自己的云端硬盘将.txt(或其他文件类型)导入Google Colab笔记本中?

如何在Google Colab笔记本中通过gmplot绘制命令查看html输出文件?

如何在Google Colab中将Jupyter笔记本的功能导入另一个Jupyter笔记本

如何在Google Collab笔记本中模拟python按键?

google colab ipython notebook 无法导入位于同一谷歌驱动器和文件夹中的另一个笔记本中定义的最新函数

通过Google Cloud并行运行多个Colab笔记本?

Google云端硬盘无法将.ipynb文件识别为colab笔记本