Go和Cython之间的差异

Mig*_*tes 6 python go cython

今天我的一位好朋友问我最新的Go语言和Cython之间的主要区别是什么,Cython是一组Python的C扩展.我对Python知之甚少,谁能告诉我为什么Go比Cython更好/更差?

rob*_*nce 9

Cython并不是传统意义上的语言.它是一个用于构建Python扩展的预处理器,它采用类似Python的语法(实际上它们力求完全兼容Python)并生成C代码(使用Python C API).这样做可以包含一些特殊情况优化,但是当你添加Cython特定的静态类型信息时,真正的好处就会出现,这些信息被合并到C代码中,绕过这些操作的Python运行时并导致高速运行.

Go是一种编译的编程语言.在Go中可以做的第一件事就是生成一个不包含Python运行时/启动Python解释器的可执行文件 - 这在Cython中是不可能的.(可能在技术上不可能 - 但如果你不使用Python,那么使用Cython是没有意义的).由于Cython只是在注释中生成C大多数问题并不真正适用 - 你可以使用任何C调试器(尽管事实上这是Python扩展使事情变得更复杂).

  • 关于Cython:我不同意.你需要保持你在C中工作的心态,而不是Python.编写存根加载器并不难,因为Python是开源的. (3认同)

Ben*_*ord 5

gevent是一个以Cython为核心的并发库.它似乎很快:http://nichol.as/asynchronous-servers-in-python

  • 事实上,cython支持`使用nogil:...`和使用openmp的并行支持 - 实际上它对本地优化非常有效.如果阻塞代码阻塞(即 - 用于通道),Gevent也可以正常工作.但正确地指出,香草蟒蛇缺乏支持会使这些事情变得更加困难.一种可能性:使用芹菜 - 然后您可以分布在多台计算机以及多个核心上. (3认同)