在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笔记本的“ .py”文件中运行Python脚本?

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

是否可以在Google Colab的笔记本中进行自动完成?

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

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

如何在Google Colab上关闭和停止Jupyter笔记本

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

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

我可以将Google Colab笔记本复制或上传到AWS Sagemaker实例吗?

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

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

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

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

使用Colab笔记本获取Google驱动器中文件的共享链接

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

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

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

使用R内核将私人数据导入Google Colab笔记本

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

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

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

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

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

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

如何使用有限权限共享Google Colab笔记本

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

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

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

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