最近使用cython做了几个c++ library的wrapper,觉得cython也许没有想象中的那么好,不说bug,只说功能短板

1. c++ struct嵌套enum的支持,比如:

struct EL_TYPE {

enum {A, B, C};

};

没法简单地封装成EL_TYPE.A这样子,只能先搞个cdef class,然后实例化去模仿,当enum很长的时候写起来很别扭,因为申明写一长串,初始化写一长串,比较难看

2. cdef class中的public/readonly变量让人两难,不这么写的话只能cython内部使用,写了的话这块的性能福利又没了

3. numpy的封装(.pxd)比较初级,编译期只包含了numpy的很少一部分(或者直接暴露numpy c api),比如PyArray_NewFromDesc这个方法的核心PyArray_Descr,完全没有封装,当需要自定义Descr时,只能按numpy的方法一个field一个field的去填

4. cython array有点坑,作为一个理应的c实现,在构造时调用了蛮多的python方法,导致这玩意的初始化性能比python array要差一个数量级,当应用中的array构造次数比较多时,这块会成为瓶颈

5. 对c++ std::vector的支持,反正都是contiguous内存了,可以映射到cython array, python array或者numpy ndarray啊

6. 对c++ side 复杂数据结构的支持,几乎就是用cython把c++部分重写一遍。。。

7. 文档。。。比较散,有user guide,有wiki,还有很多技巧性方法只能google。。。比如我就被numpy的PyArray_SimpleNewFromData方法坑过,data指针传给这个函数但numpy不负责释放,为保证ndarray和data生命周期一致要怎么弄。。。结果在<>里找到一个方法,类似于c++的智能指针,把data的引用给一个cdef class,在__dealloc__里释放它,ndarray可以set_array_base到这个cdef class ...

python转cython_说说cython的缺点相关推荐

  1. python转cython_用Cython加速Python到“起飞”(推荐)

    事先声明,标题没有把"Python"错打成"Cython",因为要讲的就是名为"Cython"的东西. Cython是让Python脚本支持 ...

  2. python代码加密cython_利用Cython对python代码进行加密

    利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...

  3. Python的.py与Cython的.pxd.pyx.pyd 文件格式之间的主要区别

    参考Python的.py与Cython的.pxd.pyx.pyd 文件格式之间的主要区别 - 云+社区 - 腾讯云 .py 文件 Python 最常用格式就是 .py (另一较常用格式为 .pyw), ...

  4. python代码加密cython_利用Cython加密python脚本

    由于 Python 的动态特性和开源特点,导致 Python 代码很难做到很好的加密.社区中的一些声音认为这样的限制是事实,应该通过法律手段而不是加密源码达到商业保护的目的:而还有一些声音则是不论如何 ...

  5. python django 优势_那么多人选择Python,它的优势,缺点有哪些?

    提及到目前最火的编程语言,Python可谓是非常受欢迎的,属于四大编程语言之一,近些年来Python的增长趋势也是非常明显的,很多人都将Python作为入门的语言,对于很多人来说都会选择学习Pytho ...

  6. python的优缺点-Python 有什么一般人不知道的缺点?

    最大的缺点可能就是很多人觉得Python特别"简单",没怎么仔细研究,然后掉进了下面这51项对于小白来说可能就是致命确定的问题-- 下面的每一个都会出现一些出乎意料的输出结果,如果 ...

  7. just函数python_提升 Python 性能 Numba 与 Cython

    ? "Python猫" ,一个值得加星标的公众号花下猫语:最近,读者微信群里又频繁聊到了 Python 的性能问题,这真是老生常谈了.我想起自己曾收藏过几篇关于如何提升性能的文章, ...

  8. python的缩进机制是其缺点之一_Python 的缩进是不是反人类的设计?

    前些天,我写了<Python为什么使用缩进来划分代码块?>,文中详细梳理了 Python 采用缩进语法的 8 大原因.我极其喜欢这种简洁优雅的风格,所以对它赞美有加. 然而文章发出去后,非 ...

  9. 学习笔记 —— 基于C加速的Python高效计算 (Cython pybind11)

    目录 引言 Cython 示例介绍 第一阶段优化 第二阶段优化 Cython Annotation tool 优化方法 第三阶段优化 比对下 JIT的Numba 总结 pybind11 Links I ...

  10. python中arcsec_在Python类中继承Cython类

    我有两个用cython编写的类,我想在python中的一个类中使用它们.在 位置.pyximport numpy as np cimport numpy as np cimport cython cp ...

最新文章

  1. javascript var变量删除
  2. Master公式(计算递归复杂度)
  3. (网页)中的简单的遮罩层
  4. WordPress中使主题支持小工具以及添加插件启用函数
  5. 计算机组装与维护配置清单作业,计算机组装与维护 作业汇.doc
  6. matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)
  7. 转_人人网开放平台技术架构
  8. POJ 3415 Common Substrings (求长度不小于k的公共子串的个数)
  9. matlab双目标定
  10. java架构师有哪些证书,22年最新
  11. python可以代替plc吗_python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...
  12. SpaceSniffer 内存管理 空间嗅探器内存清理神器
  13. 新一代大数据技术架构
  14. 在线生成ico图标的网站
  15. 80psi等于多少kpa_1公斤的气压是多少KPA?
  16. 使用Vue制作幻灯片
  17. vue使用高德地图显示坐标
  18. K8S环境快速部署Kafka(K8S外部可访问)
  19. 图解排序算法及实现——快速排序 (Quick Sort)
  20. ae 创建图像等高线 蒙版_「PS软件」工具使用,图层蒙版与橡皮擦的应用分析

热门文章

  1. Seurat SingleCellExperiment anndata相互转化
  2. 快速实现M5311NBIOT MQTT通信
  3. 计算机毕业设计之java+springboot基于vue的网上图书商城系统
  4. 网络中的中间商(CDN)
  5. ▶国务院关于延长中秋国庆放假至10天的通知
  6. 中国移动“梧桐杯”大数据应用创新大赛智慧金融初赛TOP1开源
  7. 树莓派4B连接PCF8591模块
  8. SpaceSyntax【空间句法】之DepthMapX学习:第一篇 数据的输入 与 能做哪些分析
  9. 实验吧——安全杂项之“Snake”详解
  10. vue使用高德地图第一次进去点标记有数据,第二次进去就没有了