数据科学家的常见工具--python调用C/C++

众所周知,python以简单闻名,以速度慢而臭名,而其慢的原因,无非就是以下3中:
1.GIL
2.解释型语言
3.动态类型

1.GIL是python的一个全局锁,使得python解释器每次只能运行一个线程的字节码,限制了运用多线程的能力(仅限于Cython);
2.解释性语言没什么好说的,边解释边执行,运行速度肯定小于编译后在运行的语言;
3.由于python不用声明变量类型,有动态类型的机制,动态类型导致开销巨大,导致其速度慢。

本文就带领大家做个实验,分析使用原生python和python调用C/C++的运行时间对比分析,分析的例子是计算矩阵按行的平均值,数据的本质也就是
矩阵嘛,看看是否像大家所说的python有那么慢。


  1. 原生python方式,文件命名为row_mean_py.py

     import numpy as np
    
     def row_mean_py(A):
     	out = np.zeros(A.shape[0])
     	for i in range(A.shape[0]):
     		for j in range(A.shape[1]):
     			out[i] = out[i] + A[i,j] / A.shape[1]
     	return out
    
     def row_mean_py_raw(A):
     	return np.max(A,axis=1)
    

    其中函数row_mean_py是使用python自定义方式计算矩阵按行的平均值,row_mean_py_raw是使用python向量化方法计算。让我们来看一下运行时间对比。

    文件命名为row_mean_main.py

     imp
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值