文档开发者中心
我的

【后篇】Python高性能计算库——Numba

接下来我们使用Numba来实现相同的功能。

@jit

def abc_model_numba(a, b, c, rain):

   outflow = np.zeros((rain.size), dtype=np.float64)

   state_in = 0

   state_out = 0

   for i in range(rain.size):

       state_out = (1 - c) * state_in + a * rain[i]

       outflow[i] = (1 - a - b) * rain[i] + c * state_out

       state_in = state_out

   return outflow

我用随机数字作为输入来运行这些模块,这只是为了比较计算时间,而且也比较了针对fortran实现的时间(详见here)。我们来看看数字:

py_time = %timeit -r 5 -n 10 -o abc_model_py(0.2, 0.6, 0.1, rain)

>> 6.75 s ± 11.6 ms per loop (mean ± std. dev. of 5 runs, 10 loops each)

# Measure the execution time of the Numba implementation

numba_time = %timeit -r 5 -n 10 -o abc_model_numba(0.2, 0.6, 0.1, rain)

>> 30.6 ms ± 498 µs per loop (mean ± std. dev. of 5 runs, 10 loops each)

# Measure the execution time of the Fortran implementation

fortran_time = %timeit -r 5 -n 10 -o abc_model_fortran(0.2, 0.6, 0.1, rain)

点赞
收藏
回复
分享
举报
浏览279 编辑于2019-08-27 05:48未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。