Python代码在实际应用中的方案简介

Python代码在实际应用中还是比较简捷的。给计算机语言一族在计算机语言实际应用带来一些好处,下面就简单的说明一下在Python代码标号中所对应代码中的注释处的详细介绍。

在梁平等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站设计、外贸营销网站建设 网站设计制作按需网站建设,公司网站建设,企业网站建设,品牌网站制作,成都全网营销推广,外贸网站建设,梁平网站建设费用合理。

1. 判断字符串的长度加上PyStringObject本身的大小(即整个变长对象PyStringObject的实际大小)后, 是否超过系统限制的最大大小. 书上的Python旧版代码中仅判断size > PY_SSIZE_T_MAX, 也就是没有考虑对象自身的大小, 是不完善的.

2. 当需要分配的内存超过系统限制的上限时, 抛出异常PyExc_OverflowError, 即溢出.书上的Python代码旧版代码没有抛出异常.

3. 对于长度为0的空串(即"", 而非NULL), 若nullstring已经被初始化, 则返回nullstring. 这是intern机制的一部分. 书上的Python旧版代码没有对nullstring增加引用计数.

4. 对于长度为1的字符串, 若字符表中该字符对象已经初始化, 则返回该字符对象. 这是intern机制的一部分. 书上的Python代码旧版代码没有对该字符对象增加引用计数.

5. 若申请内存空间失败, 则调用PyErr_NoMemory()处理. 书上的Python旧版代码中没这一部分.

6. 使用Py_MEMCPY代替直接使用memcpy. 贴一下Py_MEMCPY的代码:

 
 
 
  1. [Include/pyport.h]
  2. /* Py_MEMCPY can be used instead of memcpy in cases 
    where the copied blocks
  3. * are often very short. While most platforms have 
    highly optimized code for
  4. * large transfers, the setup costs for memcpy are
     often quite high. MEMCPY
  5. * solves this by doing short copies "in line".
  6. */
  7. #if defined(_MSC_VER)
  8. #define Py_MEMCPY(target, source, length) do { \
  9. size_t i_, n_ = (length); \
  10. char *t_ = (void*) (target); \
  11. const char *s_ = (void*) (source); \
  12. if (n_ >= 16) \
  13. memcpy(t_, s_, n_); \
  14. else \
  15. for (i_ = 0; i_ < n_; i_++) \
  16. t_[i_] = s_[i_]; \
  17. } while (0)
  18. #else
  19. #define Py_MEMCPY memcpy
  20. #endif

看注释应该就明白了, Py_MEMCPY是为跨平台优化而提供的一个宏. 因为在有些平台上, 调用mempcy的代价比较高, 所以对于小数据量的拷贝就原地展开成循环. 那Python代码觉得哪些平台需要这样的优化呢? 看到_MSC_VER了吧, 这个是M$的C编译器特有的宏, 看来, 需要特别优化的就是Windows下了.

分享名称:Python代码在实际应用中的方案简介
文章源于:http://www.hantingmc.com/qtweb/news20/259420.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联