亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

聊聊Python中的pypy

 更新時(shí)間:2018年01月12日 09:36:18   作者:mingz2013  
這篇文章主要介紹了聊聊Python中的pypy,具有一定借鑒價(jià)值,需要的朋友可以參考下

PyPy是一個(gè)虛擬機(jī)項(xiàng)目,主要分為兩部分:一個(gè)Python的實(shí)現(xiàn)和 一個(gè)編譯器

PyPy的第一部分: 用Python實(shí)現(xiàn)的Python

  其實(shí)這么說(shuō)并不準(zhǔn)確,準(zhǔn)確得說(shuō)應(yīng)該是用rPython實(shí)現(xiàn)的Python,rPython是Python的一個(gè)子集,雖然rPython不是完整的Python,但用rPython寫(xiě)的這個(gè)Python實(shí)現(xiàn)卻是可以解釋完整的Python語(yǔ)言。

PyPy的第二部分:編譯器

這是一個(gè)編譯rPython的編譯器,或者說(shuō)這個(gè)編譯器有一個(gè)rPython的前端,目前也只有這么一個(gè)前端,不過(guò)它的后端卻是不少,也就是說(shuō)這個(gè)編譯器支持許多的目標(biāo)語(yǔ)言,比較重要的有:C,CIL,JavaScript...

第一部分看成pypy(1)第二部分看成pypy(2)

為什么你在同一層面下同時(shí)需要這兩者?你可以這樣想一下:PyPy(1)是一個(gè)用RPython寫(xiě)的解釋器,因此它能加載用戶的Python代碼并將它編譯成字節(jié)碼。但是這個(gè)用RPython寫(xiě)的解釋器本身要能運(yùn)行,就必須要被另外一個(gè)Python實(shí)現(xiàn)去解釋。我們可以直接用CPython去.運(yùn)行這個(gè)解釋器。但是這個(gè)還不夠快取而代之,我們使用了PyPy(2)去編譯這個(gè)PyPy的解釋器,生成其他平臺(tái)(比如C,JVM或CLI)代碼在我們的機(jī)器上運(yùn)行,并且還加入了JIT特性。JIT能夠把字節(jié)碼轉(zhuǎn)換成機(jī)器語(yǔ)言,pypy之所以快,是因?yàn)樗狭薐IT跟蹤技術(shù)的優(yōu)化編譯器。

pypy性能測(cè)試

Cpython2.7.6,pyston0.2,pypy2.2.1的性能對(duì)比,使用的是pyston源代碼目錄下的minibenchmarks和microbenchmarks中
的python代碼來(lái)跑,對(duì)比結(jié)果如下表所示

 


 

Cpython2.7.6

pyston0.2

microbenchmarks




attribute_lookup.py

258.544s

200.387s

2.667s

attrs.py

0.622s

1.658s

0.086s

closures.py

0.485s

6.658s

0.058s

empty_loop.py

3.532s

19.248s

0.248s

fib2.py

3.375s

0.669s

0.804s

fib.py

3.696s

0.636s

0.864s

function_calls.py

5.283s

0.878s

0.303s

gcj_2014_2_b.py

1.527s

45.803s

0.276s

gcj_2014_3_b.py

0.022s

0.174s

0.069s

iteration.py

0.185s

1.242s

0.062s

lcg.py

2.910s

9.097s

0.235s

listcomp_bench.py

10.132s

56.170s

1.379s

nested.py

0.368s

6.828s

0.057s

polymorphism.py

4.358s

4.390s

14.260s

prime_summing.py

20.197s


43.779s

1.250s

pydigits.py

0.034s

Failed

0.039s

repatching.py

0.475s

0.384s

0.061s

simple_sum.py

0.075s

0.578s

0.040s

sort.py

2.216s

4.587s

0.135s

thread_contention.py

6.486s

8.133s

0.240s

thread_uncontended.py

1.324s

5.823s

0.238s

unwinding.py

1.082s

93.180s

4.481s

vecf_add.py

9.890s

Failed

0.059s

vecf_dot.py

4.944s

8.434s

0.062s





minibenchmarks




allgroup.py

0.836s

Failed

18.804s

chaos.py

26.268s

Failed

1.392s

fannkuch_med.py

0.990s

1.898s

0.325s

fannkuch.py

10.952s

20.834s

2.057s

Go.py

53.787s

Failed

33.638s

interp2.py

5.521s

10.124s

0.701s

interp.py

10.863s

5.035s

0.563s

nbody_med.py

3.132s

6.642s

0.601s

nbody.py

12.677s

25.540s

1.470s

nq.py

29.879s

Failed

44.418s

raytrace.py

11.608s

Failed

1.228s

spectral_norm.py:

14.388s

118.309s

1.333s

pypy編譯除了有顏色背景的數(shù)據(jù),其它測(cè)試結(jié)果基本都是最快的,其中15個(gè)程序代碼測(cè)試結(jié)果所花時(shí)間不到Cpython的十分之一

pypy的缺陷

可以看出pypy實(shí)現(xiàn)python有很大的優(yōu)勢(shì),但是目前來(lái)說(shuō)很多公司的python項(xiàng)目仍然沒(méi)有采用pypy來(lái)實(shí)現(xiàn),原因是

pypy有一個(gè)缺陷:C擴(kuò)展性弱,簡(jiǎn)單理解就是python程序中如果混合了C/C++代碼,調(diào)用了C/C++的庫(kù),就會(huì)導(dǎo)pypy

不支持或者pypy運(yùn)行速度變慢很多。而現(xiàn)在很多項(xiàng)目都是采用C/C++/Python混合編程。

但是pypy也有自己的兼容C/C++的方法(但是沒(méi)有完全解決擴(kuò)展性弱的問(wèn)題),pypy有ctypes和cffi兩種方式來(lái)

進(jìn)行C擴(kuò)展,以下是一些簡(jiǎn)單程序?qū)嶒?yàn):

用ctypes的方式實(shí)現(xiàn)C++,python混合編程,先寫(xiě)一個(gè).cpp然后在python文件中調(diào)用它,最后用Cpython,和pypy分別編譯執(zhí)行都可以跑,說(shuō)明ctypes是支持C++擴(kuò)展的

這次用pypy跑的速度就要Cpython不少了

總結(jié)

以上就是本文關(guān)于聊聊Python中的pypy的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • python 編寫(xiě)簡(jiǎn)單網(wǎng)頁(yè)服務(wù)器的實(shí)例

    python 編寫(xiě)簡(jiǎn)單網(wǎng)頁(yè)服務(wù)器的實(shí)例

    今天小編就為大家分享一篇python 編寫(xiě)簡(jiǎn)單網(wǎng)頁(yè)服務(wù)器的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 運(yùn)行python腳本更改Windows背景

    運(yùn)行python腳本更改Windows背景

    這篇文章主要介紹了運(yùn)行python腳本更改Windows背景,使用常用的命令更改桌面背景,以更改ctype中的系統(tǒng)參數(shù),下面來(lái)看看具體得更改過(guò)程吧
    2022-01-01
  • python如何禁用print輸出

    python如何禁用print輸出

    這篇文章主要介紹了python如何禁用print輸出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python Django框架url反向解析實(shí)現(xiàn)動(dòng)態(tài)生成對(duì)應(yīng)的url鏈接示例

    Python Django框架url反向解析實(shí)現(xiàn)動(dòng)態(tài)生成對(duì)應(yīng)的url鏈接示例

    這篇文章主要介紹了Python Django框架url反向解析實(shí)現(xiàn)動(dòng)態(tài)生成對(duì)應(yīng)的url鏈接,結(jié)合實(shí)例形式分析了Django框架URL反向解析具體原理與應(yīng)用操作技巧,需要的朋友可以參考下
    2019-10-10
  • Python 實(shí)現(xiàn)加密過(guò)的PDF文件轉(zhuǎn)WORD格式

    Python 實(shí)現(xiàn)加密過(guò)的PDF文件轉(zhuǎn)WORD格式

    這篇文章主要介紹了Python 實(shí)現(xiàn)加密過(guò)的PDF文件轉(zhuǎn)WORD格式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python實(shí)現(xiàn)畫(huà)五角星和螺旋線的示例

    python實(shí)現(xiàn)畫(huà)五角星和螺旋線的示例

    今天小編就為大家分享一篇python實(shí)現(xiàn)畫(huà)五角星和螺旋線的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺談一下python中threading模塊

    淺談一下python中threading模塊

    這篇文章主要介紹了一下python中threading模塊,threading提供了一個(gè)比thread模塊更高層的API來(lái)提供線程的并發(fā)性。這些線程并發(fā)運(yùn)行并共享內(nèi)存,需要的朋友可以參考下
    2023-04-04
  • PyChar學(xué)習(xí)教程之自定義文件與代碼模板詳解

    PyChar學(xué)習(xí)教程之自定義文件與代碼模板詳解

    pycharm默認(rèn)的【新建】文件,格式很不友好,那么就需要改一下文件模板。下面這篇文章主要給大家介紹了關(guān)于PyChar學(xué)習(xí)教程之自定義文件與代碼模板的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面跟著小編來(lái)一起看看吧。
    2017-07-07
  • pytorch中LN(LayerNorm)及Relu和其變相的輸出操作

    pytorch中LN(LayerNorm)及Relu和其變相的輸出操作

    這篇文章主要介紹了pytorch中LN(LayerNorm)及Relu和其變相的輸出操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Matplotlib繪圖基礎(chǔ)之3D圖形繪制詳解

    Matplotlib繪圖基礎(chǔ)之3D圖形繪制詳解

    matplotlib 在1.0版本之前其實(shí)是不支持3D圖形繪制的,后來(lái)的版本中,matplotlib加入了3D圖形的支持,擴(kuò)展了其展示數(shù)據(jù)分布和關(guān)系的能力,下面就和大家介紹一下matplotlib中繪制各類(lèi)3D圖形的方法
    2023-08-08

最新評(píng)論