作家
登录

如何让Python像Julia一样快地运行

作者: 来源: 2017-05-22 13:13:15 阅读 我要评论

应用 Cython 会获得:

  1. 100 loops, best of 3:1.94 ms per loop 

comprehension)。是以,我们不克不及将它应用到第二个函数,但我们可以将它应用到第一个函数。我们的代码类似以下代码。

  1. @jit 
  2.  
  3. def mandel_numba(z): 
  4.  
  5.     maxiter = 80 
  6.  
  7.     c = z 
  8.  
  9.     for n in range(maxiter): 
  10.  
  11.         if abs(z) > 2: 
  12.  
  13.             return n 
  14.  
  15.         z = z*z + c 
  16.  
  17.      return maxiter 
  18.  
  19. def mandelperf_numba(): 
  20.  
  21.     r1 = np.linspace(-2.0, 0.5, 26) 
  22.  
  23.     r2 = np.linspace(-1.0, 1.0, 21) 
  24.  
  25.     return [mandel_numba(complex(r, i)) for r in r1 for i in r2] 

对它计时会获得:

  1. 1000 loops, best of 3:503 µs per loop 

还不错,比 Cython 快 4 倍,比最初的 Python 代码快 9 倍!

我们还能做得更好吗?要知道是否能做得更好,一种方法是分析代码。内置的 %prun 分析器在这里不敷精确,我们必须应用一个称为 line_profiler 的更好的分析器。它可以经由过程pip 进行安装:

  1. pip install line_profiler 

安装后,我们须要加载它:

  1. %load_ext line_profiler 

然后应用一个神奇的敕令分析该函数:

  1. %lprun -s -f mandelperf_numba mandelperf_numba() 

它在一个弹出窗口中输出以下信息。

我认为这些小型的基准测试没有供给哪种说话最快的明白谜底。举例而言, randmatstat 示例处理 5×5 矩阵。应用 Numpy 数组处理它有点小题大年夜做。应当应用更大年夜的矩阵履行基准测试。

  1. Timer unit:1e-06 s 
  2.  
  3. Total time:0.003666 s 
  4.  
  5. File: 
  6.  
  7. Function: mandelperf_numba at line 11 
  8.  
  9. Line # Hits Time Per Hit % Time Line Contents 
  10.  
  11. ============================================================== 
  12.  
  13. 11 def mandelperf_numba(): 
  14.  
  15. 12 1 1994 1994.0 54.4 r1 = np.linspace(-2.0, 0.5, 26) 
  16.  
  17. 13 1 267 267.0 7.3 r2 = np.linspace(-1.0, 1.0, 21) 

      推荐阅读

      云原生安全初创公司Aporeto融资1120万美元

    Aporeto是一家“云原生”的安然始创公司,旨在确保那些不受信的IT情况的安然性。该公司方才在A轮融资——也就是岁尾产品宣布之前——获得了>>>详细阅读


    本文标题:如何让Python像Julia一样快地运行

    地址:http://www.17bianji.com/lsqh/35343.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)