Go和Cython的区别

6 投票
6 回答
7145 浏览
提问于 2025-04-15 16:04

今天我一个好朋友问我,最新的Go语言和Cython(这是为Python提供的一组C扩展)之间有什么主要区别。我对Python了解不多,有人能告诉我Go比Cython好还是差吗?

6 个回答

4

有什么不同呢?几乎所有方面都有区别!

  • 并发和通道。
  • 接口。
  • 静态类型检查。
  • ...
5

gevent 是一个并发库,它的核心使用了 Cython。听起来它的速度挺快的,具体可以参考这个链接:http://nichol.as/asynchronous-servers-in-python

9

Cython其实并不是我们常说的那种编程语言。它更像是一个工具,可以帮助我们创建Python的扩展。Cython使用类似Python的语法(他们的目标是尽量与Python兼容),然后把这些代码转换成C语言代码(通过Python的C API)。这样做的好处是可以加入一些特别的优化,但真正的好处在于你可以添加Cython特有的静态类型信息,这些信息会被整合进C代码中,这样在执行这些操作时就可以绕过Python的运行时,从而大幅提高速度。

而Go是一种编译型编程语言。在Go中,第一件事情就是可以生成一个可执行文件,而这个文件不需要包含Python的运行时或启动Python解释器——这在Cython中是做不到的。(虽然从技术上讲可能不是完全不可能,但如果你不在用Python,使用Cython就没有什么意义了)。因为Cython最终生成的是C代码,所以你在评论中提到的大部分问题其实并不适用——你可以使用任何C语言调试工具(不过因为它是Python的扩展,这确实让事情变得有点复杂)。

撰写回答