python和c++无缝对接_总结:Python学习 和 Python与C/C++交互

本篇仅仅是Python的学习和Python和C++数据对接过程中的一些总结。

由于工作的需要,用一周的时间学习 Python。

Python是基于C实现的一门解释型语言,由于其易用性,俘获了不少开发者和运维的心。据说,Python 在科学计算领域,逐步吞噬着古老语言 Fortran的份额。这门语言是Google的第二语言,国内的知乎,豆瓣,都使用纯Python开发。Python的官方网站:http://www/python.org.

为了逐步完善的我们服务,我们需要为客户提供更多,更好,更安全便捷的服务。在已有服务基础上,为了满足某些互联网客户的需要,我们需要提供公司产品的Python驱动。

因为客户需求的紧迫性,和我们的优势,在进行一个周的数据对接调研和测试之后,我和我的搭档决定使用已经稳定的C++驱动,用Python写一个表现层,底层通过wrapper和C++接口进行对接,然后通过C++与数据库服务交互。这能不仅为我们节省不少开发时间,而且将重点放在了Python与C++之间数据对接上,而不是通过纯Python直接和数据库服务进行交互。

C++ 驱动已经是进过严格测试的产品模块,通过Python对所提供的接口进行再一次的封装,使之对客户透明。而Python的简单易用和与C/C++无缝交互的天生属性,可以为客户提供更方便的服务。

Python简单得令人发指,可以不用关心对象的回收问题(当然,在C++这一层,必须关系对象的生命周期),可以返回多个对象,语法更接近自然语言。然而,简单的背后,是语言开发维护者辛勤的付出。

一下,对近期写Python驱动的一些总结:

1、在Python中,一切都是对象,就连None也是对象。

2、@classmethod是一个属性,它的调用,需要提供cls参数,是类方法,未加任何属性说明的函数,需要提供self参数,是实例方法。classmethod的声明,可以通过在函数定义前添加@classmethod 关键字声明。

3、python语言没有提供单独的int64,或者long long 类型,因为long已经足够。但是在传递到C++这层的时候,需要int64或者long long类型参数,则需要用Python传入PyLong的对象,然后通过PyLong_AsLongLong进行转换。

4、在C++层,不能直接返回的NULL,需要转换成Py_None,否则会抛出 SystemError 异常。

5、在C/C++中,需要对各种类型,进行转换才能返回给Python使用,因为Python的一切都是对象。关键接口是 Python.h中的 Py_BuildValue。你可以根据需要,返回一个或多个返回值。

6、还有不少,总之,python给我带来了很多方便的地方。

当然,一门语言被用的火热的时候,少不了别人骂。我也栽到过不少坑:

1、著名的缩进问题,因为在linux环境下,用vim写代码,由于缩进的问题,一个错误,让我找了好久。

2、Python的GC是基于引用计数的,在Python这层,可以肆无忌惮的使用,但是到了C/C++这层,对于引用Python传递下来的对象,需要主动使用Py_XINCREF 和 Py_XDECREF来增加和减少引用计数,不得不吐槽,在Python和C/C++交互的时候,Python的引用计数显得很鸡肋。引用计数问题,我更愿意封装一个smart_ptr来实现,而不是每次引用的时候,还去自己写一行语句去增加和减少引用。例如在C++返回Py_None的时候,你需要先去Py_XINCREF(Py_None),然后返回Py_None。

3、没有提供enum等原型,在众多错误码中,我不得不写一个class去实现形如const的值系列。

经过一个月的调研,开发,测试,我觉得我对Python有了一定的认识,曾经叨叨想学而一直没有好好学的语言,在工作的压力下,一个周就搞定。

在工作的基础上,成长的速度,要比自己业余东看看西学学快得多。

接着上月的汇编语言定位,查找内存出错等core问题之后,本月又学习了更深一层:通过汇编及栈桢,逆向定位和排查因为栈溢出导致寄存器数据被冲导致的程序崩溃。

=====>THE END<=====

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题

报错如下&#xff1a; Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘sss.month_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by问题出现…

融合非负矩阵分解和图全变分的歌曲推荐算法

摘要&#xff1a; Kirell Benzi, Vassilis Kalofolias, Xavier Bresson and Pierre Vandergheynst Signal Processing Laboratory 2 (LTS2), Swiss Federal Institute of Technology (EPFL) Kirell Benzi, Vassilis Kalofolias, Xavier Bresson and Pierre Vandergheynst Sign…

Facebook面向所有用户开放人脸识别功能;福布斯美国最具创新力领袖公布;AMD:将发新BIOS 优化三代锐龙加速性能……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

mysql root命令_MySQL 修改 root 密码命令

安装好 MySQL 并成功启动 MySQL 服务后&#xff0c;可以通过以下方法修改root密码&#xff1a;①用 mysqladmin.exe 操作。指令如下&#xff1a;cd C:\Program Files\MySQL Server 5.5\binmysqladmin -u root -p password 123456Enter password:如果是第一次修改 root 密码&…

Python数据挖掘与机器学习技术入门实战

摘要&#xff1a; 什么是数据挖掘&#xff1f;什么是机器学习&#xff1f;又如何进行Python数据预处理&#xff1f;本文将带领大家一同了解数据挖掘和机器学习技术&#xff0c;通过淘宝商品案例进行数据预处理实战&#xff0c;通过鸢尾花案例介绍各种分类算法。 课程主讲简介&a…

python删除excel内容_用python批量删除sheet

因为工作关系维护了一个Excel文件&#xff0c;格式是xlsx&#xff0c;每天一个sheet&#xff0c;从17年下半年到目前已经有上百个sheet&#xff0c;导致文件越来越大&#xff0c;发邮件加载也变得很慢。想要删除一部分&#xff0c;保留近一个月的&#xff0c;当然手动删除是不可…

45K!拿下 AI 技术岗,这些知识点全考了!

是的 &#xff0c;你没猜错&#xff01;就是人工智能&#xff01;AI的炽手可热程度和重要性无需多提。最近&#xff0c;笔者在网上发现了一个报告&#xff0c;报告名字&#xff1a;《BAT人工智能领域人才发展报告》&#xff0c;发现BT招聘AI的速度提升了近400%&#xff0c;其中…

常用命令集合_Windows

文章目录一、maven操作二、运行SpringBoot项目三、Spring Boot 热部署一、maven操作 说明执行命令删除.lastUpdated结尾的文件for /r %i in (*.lastUpdated) do del %imaven打包跳过测试mvn clean install -DskipTests 二、运行SpringBoot项目 说明执行命令直接运行jarnohup …

考察数据科学家支持向量机(SVM)知识的25道题,快来测测吧

摘要&#xff1a; 本套自测题专为SVM及其应用而设计&#xff0c;目前超过550人注册了这个测试&#xff0c;最终得满分的人却很少&#xff0c;[doge],一起来看看你的SVM知识能得多少分吧&#xff0c;顺便还能查漏补缺哦。Introduction机器学习强大如一座军械库&#xff0c;里面有…

找第一个只出现一次的字符_leetcode哈希表之第一个只出现一次的字符

序本文主要记录一下leetcode哈希表之第一个只出现一次的字符题目在字符串 s 中找出第一个只出现一次的字符。如果没有&#xff0c;返回一个单空格。 s 只包含小写字母。示例:s "abaccdeff"返回 "b"s "" 返回 " "限制&#xff1a;0 &…

linux查看pid 对应的程序_资深程序员总结:分析 Linux 进程的 6 个方法,我全都告诉你...

(给Linux爱好者加星标&#xff0c;提升Linux技能)作者&#xff1a;LemonCoder(本文来自作者投稿)操作系统「进程」是学计算机都要接触的基本概念&#xff0c;抛开那些纯理论的操作系统底层实现&#xff0c;在Linux下做软件开发这么多年&#xff0c;每次程序运行出现问题&#x…

SpringBoot2.x 优秀开源项目

前后端分离vue开源项目&#xff1a; 项目名开源地址eladmin-webhttps://gitee.com/elunez/eladmin-webeladminhttps://gitee.com/elunez/eladminRuoYi-Vuehttps://gitee.com/y_project/RuoYi-Vuevue-manage-system(建议练手挺好的)https://github.com/lin-xin/vue-manage-syst…

无人值守时代,运维如何保障发布质量?

摘要&#xff1a; 阿里巴巴千亿交易背后&#xff0c;如何尽量避免发布故障&#xff1f;在面对实际运维过程中遇到的问题该如何解决&#xff1f;阿里巴巴运维技术专家少荃&#xff0c;给我们带来了解决方案和思路。 导读&#xff1a;阿里巴巴千亿交易背后&#xff0c;如何尽量避…

记一道字节跳动的算法面试题

戳蓝字“CSDN云计算”关注我们哦&#xff01;来源公众号&#xff1a;苦逼的码农作者&#xff1a;帅地前几天有个朋友去面试字节跳动&#xff0c;面试官问了他一道链表相关的算法题&#xff0c;不过他一时之间没做出来&#xff0c;就来问了我一下&#xff0c;感觉这道题还不错&a…

带您探究云存储的奥秘,三分钟帮您快速了解OSS

摘要&#xff1a; 快来&#xff0c;带您探究云存储的奥秘&#xff0c;三分钟帮您快速了解OSS。 阿里云对象存储服务&#xff0c;简称 OSS&#xff0c;是一种面向海量数据规模的分布式存储服务&#xff0c;具有稳定、可靠、安全、低成本的特点&#xff0c;能够提供十一个九的数据…

mysql3错误_第3行MYSQL语法错误

我第一次尝试将大量数据写入MYSQL数据库。我正在使用以下插入查询&#xff1a;if ($_POST[SubmitSave] ) {$connection mysql_connect($host, $user, $pass);if (!$connection){die(Could not connect: . mysql_error());}mysql_select_db($db, $connection);if ($_POST[SBI_…

python控制程控电源_程控电源原理_程控电源的用途浅谈

程控电源简介程控电源指通过外部控制来设定输出电压、输出电流的稳压、稳流或稳压/稳流的电源。程控河试电源采用微机控制&#xff0c;技术先进&#xff0c;全程控、全按键操作&#xff0c;体积小、重量轻、携带方便&#xff0c;既可用于实验室&#xff0c;也可以现场使用。程控…

SQL入门试炼创建表

创建表 一定要设置主键 表和表之间关联&#xff0c;推荐创建中间表&#xff0c;不建议使用外键(影响性能) 用户表 CREATE TABLE sys_user (user_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 用户ID,dept_id bigint(20) DEFAULT NULL COMMENT 部门ID,login_name varchar(30…

六大主题报告,四大技术专题,AI开发者大会首日精华内容全回顾

戳蓝字“CSDN云计算”关注我们哦&#xff01;9月6-7日&#xff0c;2019中国AI开发者大会&#xff08;AI ProCon 2019&#xff09; 在北京拉开帷幕。本次大会由新一代人工智能产业技术创新战略联盟&#xff08;AITISA&#xff09;指导&#xff0c;鹏城实验室、北京智源人工智能研…

SQL老司机,居然是这样智能挖掘异常日志

摘要&#xff1a; 提取异常日志是个大难题 面对海量的日志(TB乃至PB级别&#xff09;&#xff0c;如何从日志中挖掘出异常信息对于大部分的开发者而言是一个大难题。例如&#xff0c;判断机器的延时是否正常&#xff0c;部分request是否正常。通常&#xff0c;我们对于异常的数…