`
8366
  • 浏览: 809340 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

用C语音编写python的扩展模块,也就是python调c库

 
阅读更多

参考资料:

 

1.用C语言扩展Python的功能:

http://www.ibm.com/developerworks/cn/linux/l-pythc/

2.用C语言编写Python扩展模块:

http://hi.baidu.com/jinmu190/blog/item/c5475846eee39c056a63e5f1.html


3.怎样编写python脚本的C扩展模块

http://blog.csdn.net/dengxu11/article/details/7393395

 

4.使用C语言扩展Python

http://www.cnblogs.com/phinecos/archive/2010/05/23/1742344.html

 

 

我们知道python是一种很好的胶水语言,现在有个问题,如何让python 调用到c程序,
假如c程序已经是成熟的code.

方式有3种:
1.直接调用动态库
2.通过SWIG接口
前面2中方式参考: http://www.2cto.com/kf/201009/74906.html
3.为调用者python 写一个c的扩展包

需求:有一个POC的项目,需要在openstack的 源码里面加入我们自己的控制逻辑.openstack是
python 写的,我们自己的控制逻辑是个成熟的code,(大量的so), 我们需要在python code中调用
c code. 我们采用 方式3 为python写一个 扩展包,然后在python中调用 c code


例子:为say.c 编写一个 符合python 标准的扩展包


 a. say.h 已经存在,里面有2个函数定义 sayhello, saybye
 b. say.c 已经存在,里面实现了 say.h 中定义的方法
 c. sayModule.c 是为 python 调用者写的 一个扩展包,最终会使用 distutils 编译成say.so
 d. setUp.py,将c code 打包成 so :
 
 [root@egovmo03 C]# python setup.py install
running install
running build
running build_ext
building 'say' extension
creating build
creating build/temp.linux-x86_64-2.4
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC -I/usr/include/python2.4 -c sayModule.c -o build/temp.linux-x86_64-2.4/sayModule.o
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC -I/usr/include/python2.4 -c say.c -o build/temp.linux-x86_64-2.4/say.o
creating build/lib.linux-x86_64-2.4
gcc -pthread -shared build/temp.linux-x86_64-2.4/sayModule.o build/temp.linux-x86_64-2.4/say.o -o build/lib.linux-x86_64-2.4/say.so
running install_lib
copying build/lib.linux-x86_64-2.4/say.so -> /usr/lib64/python2.4/site-packages
[root@egovmo03 C]#

测试:

[root@egovmo03 C]# python
Python 2.4.3 (#1, Jun 11 2009, 14:09:37)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import say
>>> dir(say)
['__doc__', '__file__', '__name__', 'bye', 'error', 'hello', 'say']   ->>> say 模块多了 hello 和 bye方法
>>> aa='xpxp'
>>> say.hello(aa);
hello, xpxp
>>> say.bye(aa);
bye, xpxp
>>>

 

 

分享到:
评论

相关推荐

    Python-SimpleAudioIndexer音频文件中搜索单词短语的Python库

    **Python-SimpleAudioIndexer** 是一个专门用于音频文件中搜索特定单词或短语的Python库,同时也提供了一个命令行工具。这个工具的核心功能是帮助用户快速定位到音频文件(以.wav格式为主)中特定词汇或正则表达式...

    python 编写的 collins离线词典,可增加自定义记录 ipad pathonista上编写的.rar

    ".py"扩展名表示Python源代码文件,而".pyui"可能是用于描述用户界面的文件,可能使用了像PyQt或Kivy等Python GUI库来构建应用的图形用户界面。 “wordbook”可能是一个数据文件或者模块,包含了用户的单词本数据,...

    PyTorch的信号处理库_Python_C_下载.zip

    本资源“PyTorch的信号处理库_Python_C_下载.zip”很可能包含了一个用Python和C语言编写的信号处理库,用于增强PyTorch的信号处理功能。下面我们将深入探讨PyTorch中的信号处理及其相关概念。 1. PyTorch框架介绍:...

    Python库 | wechaty-0.6.0.tar.gz

    - **插件系统**:wechaty支持插件扩展,允许开发者编写自己的功能模块,增强聊天机器人的功能。 4. **安装与配置**: - 安装wechaty通常是通过Python的包管理器pip进行的,命令可能是`pip install wechaty`,但在...

    Python库 | tencentcloud-sdk-python-wav-3.0.564.tar.gz

    Python库,也称为模块或包,是一组相关的函数和类的集合,用于扩展Python的功能。它们通常包含了特定领域的工具或功能,比如科学计算、数据可视化、网络编程等。Python库通过导入机制被引入到代码中,极大地提升了...

    Python-wukongrobot是一个简单灵活优雅的中文语音对话机器人智能音箱项目

    《Python-wukongrobot:构建你的个性化中文语音对话智能音箱》 在当今人工智能技术日新月异的时代,Python-wukongrobot项目为中国的Maker和Hacker们提供了一个独特且便捷的平台,让他们能够轻松地创建自己的中文...

    python3.0模拟实现的对讲机功能

    在Python中,我们可以使用内置的`socket`模块来创建和管理套接字。以下是一个简单的服务端示例: ```python import socket def start_server(): # 创建一个TCP套接字 server_socket = socket.socket(socket.AF_...

    Python库 | ciscoaxl_JFK-0.0.3.tar.gz

    使用ciscoaxl库,开发者可以编写Python脚本,轻松实现如下的功能: - 自动创建新用户账户,并分配电话设备和权限。 - 更新电话分机的拨号规则,以适应新的公司结构或法规要求。 - 监控UCM的日志,检测异常活动并自动...

    Python库 | stt-0.10.0a6-cp38-cp38-macosx_10_9_x86_64.whl

    在Python开发中,库(Library)是程序员创建的可重用代码模块,它们提供了额外的功能,使得开发者可以专注于自己的核心业务逻辑,而不是从零开始编写所有基础功能。"stt"可能代表语音识别(Speech-to-Text)相关的库...

    python174语音数据及标注核对审核系统.rar

    4. **语音处理库**:可能使用了诸如Librosa、SpeechRecognition或DeepSpeech等Python库进行语音识别和处理。 5. **标注工具**:用于创建和编辑语音数据标注的工具或模块,可能是一个图形化界面。 6. **配置文件**:...

    使用python编写一个语音朗读闹钟功能的示例代码

    在Python编程中,创建一个语音朗读闹钟是一项实用的功能,尤其对于自动化提醒或者辅助有视觉障碍的人。本文将详细讲解如何使用Python的win32com模块来实现这一功能。 首先,我们需要了解什么是TTS(Text-to-Speech...

    Python库 | engagevoice_sdk_wrapper-0.5.6.dev0-py3-none-any.whl

    `.whl`文件包含了编译好的Python扩展模块,使得安装过程更加简便,避免了编译源代码的步骤,尤其对于那些依赖C扩展的库,使用`.whl`文件可以大大提高安装速度。 engagevoice_sdk_wrapper库,正如其名,是一个用于与...

    Python库 | norman_ai-0.0.4.tar.gz

    在Python的世界里,库是扩展其功能的核心方式,它们提供了各种各样的工具和模块,帮助程序员高效地编写代码,特别是对于人工智能(AI)相关的应用。 "norman_ai"这个名字暗示了它可能是一个与人工智能相关的库,...

    Python库 | mypy-boto3-lexv2-runtime-1.17.76.tar.gz

    标题中的“Python库 | mypy-boto3-lexv2-runtime-1.17.76.tar.gz”指的是一个Python库的压缩包,这个库是针对Amazon Lex V2 Runtime的类型检查工具mypy的扩展。Amazon Lex是一款由AWS提供的服务,用于构建自然语言...

    基于python语音识别的智能垃圾分类系统源码数据库.zip

    1. **语音识别**:该项目利用了Python的语音识别库,如`SpeechRecognition`,可以捕捉并处理用户的语音输入。该库支持多种语音识别引擎,例如Google Speech Recognition,通过将语音转化为文字,实现了用户通过语音...

    PyPI 官网下载 | speechpro-cloud-python-0.1.5.tar.gz

    Python库是开发者用来扩展标准库功能、简化代码编写或解决特定问题的工具。 在"压缩包子文件的文件名称列表"中,我们只有一个条目 "speechpro-cloud-python-0.1.5"。通常,一个Python库的tar.gz文件解压后会包含...

    Python库 | rasa_audiocodes-0.4.0.tar.gz

    在Python编程中,库(Library)是开发者用于扩展语言功能的重要工具。它们通常包含了一系列预定义的函数、类或者模块,使得开发者能够方便地调用和复用代码,从而提高开发效率和代码质量。`rasa_audiocodes` 作为...

    Python库 | mypy_boto3_sms_voice-1.14.0.0-py3-none-any.whl

    在使用mypy_boto3_sms_voice库的场景中,后端开发者可以编写代码来创建、管理和发送SNS主题、订阅者,以及利用AWS的语音服务发送语音通知。后端开发涉及到数据库设计、API接口设计、服务器架构优化等多个方面,...

Global site tag (gtag.js) - Google Analytics