S*A 发帖数: 7142 | 1 感觉没有第一眼看上去那么好。
这个可能和我个人习惯有关。写 Python C module,
我已经是大半个熟练工种了,我甚至写过直接从 C source
生成 Python C module 的东西。过于复杂没有发表。
这个 cython 生成的 C file 非常乱,没法读的。
这个比较打击我的热情。cyx 的语法很怪,类似 python
但是又有很多细节的规则要记住。有点隔靴挠痒的感觉,
这个我上次就说过了。我觉得费那么多力气就是为了避免
直接写 Python C module 似乎不是很值得。Python C
module 非常有规律可寻的,虽然看起来 Code 很多,
但是结构性很强,所以很容易理解。而且这些理解能帮助
你进一部了解 Python 内部工作原理,对写好 Python Code
很有帮助的。关键是这个 cython 的代码感觉不优美,里面
magic 太多。我个人是比较不喜欢 magic 系统的。
而且归根到底这是个比较鸡肋的市场。如果我要 performance.
那我就直接把数据 dump 到 C module 里面好了。关键部分用
C 写没有什么碍手碍脚的。Python 的 list, dictionary 在
C 里面访问都很容易的。至少感觉比较有章法。
适合 cython 的大概是要求开发很快,速度要比普通 Python
快,但是又不是特别高,又痛恨写 C code 的情况比较适合。
例如玩矩阵运算这些人。
学这个 cython 有些门槛,如果没玩过 Python C API 的人我
建议先学学 C API. 再学 cython 就可以比较有感觉 cython
到底帮你省了什么。
C module 对我来说已经是 sinking cost,所以没有很多动力学
奇怪规则的 cython。 写 cython 没有写 C module 感觉好,
虽然写得快一些。不同人的结论很可能会不一样。 |
F*******i 发帖数: 190 | 2 Well said.
Any suggestions/docsto write c modules for python?
Also, any suggestions to connect c++ <-> python? (boost/swig/cython?)
thanks!
【在 S*A 的大作中提到】 : 感觉没有第一眼看上去那么好。 : 这个可能和我个人习惯有关。写 Python C module, : 我已经是大半个熟练工种了,我甚至写过直接从 C source : 生成 Python C module 的东西。过于复杂没有发表。 : 这个 cython 生成的 C file 非常乱,没法读的。 : 这个比较打击我的热情。cyx 的语法很怪,类似 python : 但是又有很多细节的规则要记住。有点隔靴挠痒的感觉, : 这个我上次就说过了。我觉得费那么多力气就是为了避免 : 直接写 Python C module 似乎不是很值得。Python C : module 非常有规律可寻的,虽然看起来 Code 很多,
|
S*A 发帖数: 7142 | 3 我觉得 Python 官方的文档 C API 那部分就挺好。上手是够用的。
自己写个 module 调用自己的 function. 创建一个 extenstion type.
写个基本的 method. 这个就是不错的开始了。
深入的没有很多文档。主要的困难在于 python type struct
里面有很多 member, 怎么用不是很多文档。这个最好的就是看
Python 自己的 source code. Python/objects/
例如你好实现个 dictionary 类似的 type. 看 dictobjects.c
一般 Python 内部的 Object 有很多 fancy 的功能。或者类似的
object. 粗看代码很多。把注意力放你要实现的那些动能先。
c++ -> python 有写工具可以用的,但是我不是很熟悉。
我一般不用 c++。
【在 F*******i 的大作中提到】 : Well said. : Any suggestions/docsto write c modules for python? : Also, any suggestions to connect c++ <-> python? (boost/swig/cython?) : thanks!
|
F*******i 发帖数: 190 | 4 cool.
thanks a lot.
【在 S*A 的大作中提到】 : 我觉得 Python 官方的文档 C API 那部分就挺好。上手是够用的。 : 自己写个 module 调用自己的 function. 创建一个 extenstion type. : 写个基本的 method. 这个就是不错的开始了。 : 深入的没有很多文档。主要的困难在于 python type struct : 里面有很多 member, 怎么用不是很多文档。这个最好的就是看 : Python 自己的 source code. Python/objects/ : 例如你好实现个 dictionary 类似的 type. 看 dictobjects.c : 一般 Python 内部的 Object 有很多 fancy 的功能。或者类似的 : object. 粗看代码很多。把注意力放你要实现的那些动能先。 : c++ -> python 有写工具可以用的,但是我不是很熟悉。
|