PyPy是Python开发人员为了更好的Hack Python创建的项目。此外,PyPy比CPython是更加灵活,易于使用和试验,以制定详细的功能在不同情况的实现方法,能够非常easy实施。 该项目的目标是,让PyPy比C实现的Python更为easy的适应各个项目和方便裁剪。

PyPy的第一部分:用Python实现的Python

事实上这么说并不准确,准确得说应该是用rPython实现的Python。rPython是Python的一个子集,尽管rPython不是完整的Python,但用rPython写的这个Python实现却是能够解释完整的Python语言。

PyPy的第二部分:编译器

这是一个编译rPython的编译器,或者说这个编译器有一个rPython的前端。眼下也仅仅有这么一个前端。只是它的后端却是不少。也就是说这个编译器支持很多的目标语言,比較重要的有:C。CIL。Javascript ...

PyPy还提供了JIT编译器和沙盒功能。因此执行速度比CPython要快。以及能够安全的执行一些不被信任的代码。

PyPy另一个单独的支持微线程的版本号。这些都是python的弱项,pypy是神器

下面面程序为例:

import  time
start=time.clock()
sum=0
i=1.0
while (i<10000000):
    sum+=i/2.22
    i=i+1
print "sum:%f"%sum
end = time.clock()
print "seconds:%f"%sum

本博客全部内容是原创。假设转载请注明来源

http://blog.csdn.net/myhaspl/

执行上面程序

deep@myddb:~$ python pythontest.py
sum:22522520270270.273438
seconds:4.090000
deep@myddb:~$ ./pypy  pythontest.py
sum:22522520270270.273438
seconds:0.256000
deep@myddb:~$

效果非常不错,让人惊讶

上面程序用到下面函数:

time.clock()

On Unix, return the current processor time as a floating point number expressed in seconds. The precision, and in fact the very definition of the meaning of “processor time”, depends on that of the C function of the same name, but in any case, this is the function to use for benchmarking Python or timing algorithms.

Python的标准库手冊推荐在不论什么系统下都尽量使用time.clock()。

只是要注意是在win32系统下,这个函数返回的是真实时间(wall_time),而在Unix/Linux下返回的是CPU时间,不包含其它程序使用的CPU时间。

只是与C还是有差距的,可是已经非常不错的。相比cpython来说。

deep@myddb:~$ gcc pythontest.c -o test1
deep@myddb:~$ ./test1
sum = 22522520270270.273438
seconds = 0.080000  s
deep@myddb:~$ ./pypy  pythontest.py
sum:22522520270270.273438
seconds:0.236000
deep@myddb:~$

pythontest.c程序例如以下:

#include <TIME.H>
#include <STDIO.H>

int main(){
long Time_Start = 0,Time_End = 0;
double Time_Total = 0.0;

double i = 1.0;
double sum = 0.0;

Time_Start = clock();
while(i<10000000){
sum += (double)i/2.22;
i = i+1;
}
Time_End = clock();

Time_Total = (double)(Time_End-Time_Start)/CLOCKS_PER_SEC;
printf("sum = %f\n",sum);
printf("seconds = %f  s\n",Time_Total);
return 0;
}

数学之路-python计算实战(2)-初遇pypy的更多相关文章

  1. 数学之路-python计算实战(21)-机器视觉-拉普拉斯线性滤波

    拉普拉斯线性滤波,.边缘检測  . When ksize == 1 , the Laplacian is computed by filtering the image with the follow ...

  2. 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)

    Blurs an image using the median filter. C++: void medianBlur(InputArray src, OutputArray dst, int ks ...

  3. 数学之路-python计算实战(5)-初识numpy以及pypy下执行numpy

    N .有用的线性代数.傅里叶变换和随机数生成函数.numpy和稀疏矩阵运算包scipy配合使用更加方便.NumPy(Numeric Python)提供了很多高级的数值编程工具,如:矩阵数据类型.矢量处 ...

  4. 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波

    拉普拉斯算子进行二维卷积计算,线性锐化滤波 # -*- coding: utf-8 -*- #线性锐化滤波-拉普拉斯算子进行二维卷积计算 #code:myhaspl@myhaspl.com impor ...

  5. 数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)

    # -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #归一化块滤波 import cv2 import numpy as np fn="tes ...

  6. 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

    我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是  是图像中全部的灰度数, 是图像中全部的像素数,  实际上是图像的直方图,归一化到 . 把  作为相应于  的累计概率 ...

  7. 数学之路-python计算实战(19)-机器视觉-卷积滤波

    filter2D Convolves an image with the kernel. C++: void filter2D(InputArray src, OutputArray dst, int ...

  8. 数学之路-python计算实战(9)-机器视觉-图像插值仿射

    插值 Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolation – interpol ...

  9. 数学之路-python计算实战(4)-Lempel-Ziv压缩(2)

    Format characters have the following meaning; the conversion between C and Python values should be o ...

随机推荐

  1. Impossible WPF Part 2: Binding Expressions

    原文 http://www.11011.net/wpf-binding-expressions Back in April I posted an idea for building an expre ...

  2. springMVC中得到request对象,session对象

    RequestAttributes ra = RequestContextHolder.getRequestAttributes(); HttpServletRequest request = ((S ...

  3. hdu1540之线段树单点更新+区间合并

    Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  4. C#根据域名查询IP(CMD命令参数输入或者启动程序后再输入查询)

    有时因为需要,希望知道域名的IP,那用C#怎么实现呢?以下是实现代码 using System; using System.Collections.Generic; using System.Linq ...

  5. oracle expdp和impdp使用例子

    情景: 由于生产需求,需要把rmtel用户的数据完全复制一份给rmtel_xzy,但排除rmtel用户 ('CAB_JJXPORT_TAB','T_SERVICEXX','TB_CROSSCONNEC ...

  6. Website 内容管理

    公司网站后是这样的. 用的是中企动力的,后台还是比较好管理的.所以不多说什么了.

  7. 回归基础从新认识——HTML+CSS

    前言 这段时间工作没那么繁杂,索性就想说来套系统的学习,之前去面试的时候,有被问及些基础的知识,居然回答不上来,也不能说是回答不上吧,回答的不全面.前端群上问了那个机构比较好,选择了慕课网.看了一段时 ...

  8. Python 绝对简明手册

    Python 绝对简明手册 help(函数名)来获取相关信息 另外,自带的文档和google也是不可少的 2. 基本语法2.1. if / elif / else x=int(raw_input(&q ...

  9. 在CentOS下源码安装 Xen并搭建Windows虚拟机

    前言 首先要感谢xing的帮助,在他的指导之下才完成环境的搭建,本文档的部分内容来自他的文档.另外,还要感谢——互联网. 1.       环境介绍 Linux: CentOS 6.3 Xen: Xe ...

  10. Android 锁屏状态/锁屏密码等相关

    Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...