开始主要写python的东西了,写习惯了JAVA和node.js,现在最不能适应的就是这语言实在是太慢了。。。慢的让人受不了。。。不过确实也有很爽的地方,python确实简单方便
由于现在涉及到的东西想要在gevent上做一层扩展,使得socket描述符可以跨进程在gevent的loop上注册。。。
python的socket由于没有sendmsg这些东西,所以这里就只有用到cython来做一下扩展了。。。
从最简单的开始吧,定义pyx文件,aa.pyx,内容如下:
cdef extern from"stdio.h":
extern int printf(const char *format, ...)
def addtest(a,b):
printf("hello fjs\n")
cdef float c=a+b
return c然后调用cython命令来进行编译:
cython aa.pyx
编译可以得到aa.c文件,接下来调用gcc来进行编译:
gcc -c aa.c -I /usr/include/python2.7/
gcc -shared aa.o -lpython2.7 -o aa.so
这样子就可以编译得到aa.so文件了,直接就可以调用python的import来载入这个模块:
我们测试一下:
>>> import aa
>>> print aa.addtest(1, 2)
hello fjs
3.0
嗯。。好像挺简单的。。。基本用法懂了。。接下来的事情就是要解决最开始的需求了。。
本文介绍如何使用Cython扩展Python语言,通过编写pyx文件并编译为.so文件,实现在gevent环境下socket描述符跨进程注册的功能。演示了从定义pyx文件开始,到调用cython命令编译,最终导入并测试模块的过程。
1459

被折叠的 条评论
为什么被折叠?



