QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

实习版主

Rank: 10Rank: 10

技术值
查看: 8666|回复: 758

[技术交流] 加一行代码让python的运行速度提高100倍

  [复制链接]
最佳答案
54 
累计签到:349 天
连续签到:1 天
jerryxjr1220 发表于 2017-7-11 17:48:09 8666758 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jerryxjr1220 于 2017-7-12 12:47 编辑

python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差。

“一行代码让python的运行速度提高100倍”这绝不是哗众取宠的论调。

我们来看一下这个最简单的例子,从1一直累加到1亿。

最原始的代码:
  1. import time
  2. def foo(x,y):
  3.         tt = time.time()
  4.         s = 0
  5.         for i in range(x,y):
  6.                 s += i
  7.         print('Time used: {} sec'.format(time.time()-tt))
  8.         return s

  9. print(foo(1,100000000))
复制代码


结果:
Time used: 6.779874801635742 sec
4999999950000000

我们来加一行代码,再看看结果:
游客,如果您要查看本帖隐藏内容请回复


结果:
Time used: 0.04680037498474121 sec
4999999950000000

是不是快了100多倍呢?

@SixPy @冬雪雪冬 @~风介~ @小甲鱼

感谢@小甲鱼 设精!

游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 6荣誉 +21 鱼币 +22 贡献 +5 收起 理由
飞向布拉格 + 3
Ruide + 2 + 2 + 1 Numba !!
鬼人 + 5 + 5 + 3 感谢楼主无私奉献!
新手·ing + 5 + 5
小甲鱼 + 6 + 6 感谢楼主无私奉献!
lh625243422 + 3 + 1 + 1 感谢楼主无私奉献!

查看全部评分

楼层
跳转到指定楼层
最佳答案
54 
累计签到:349 天
连续签到:1 天
jerryxjr1220  楼主| 发表于 2017-7-11 17:50:54 | 显示全部楼层
有了这个神器以后,是不是以前“欧拉计划”中许多暴力解法算不出的问题都能算出来了呢?
最佳答案
1 
累计签到:79 天
连续签到:1 天
kio 发表于 2017-7-11 18:10:50 | 显示全部楼层
看看
最佳答案
49 
累计签到:1259 天
连续签到:1 天
~风介~ 发表于 2017-7-11 18:43:31 | 显示全部楼层
看起来很厉害的样子~
最佳答案
0 
累计签到:50 天
连续签到:1 天
master-c 发表于 2017-7-11 18:55:57 | 显示全部楼层
看看
最佳答案
0 
累计签到:1 天
连续签到:1 天
cngrand 发表于 2017-7-11 19:37:25 | 显示全部楼层
xx
最佳答案
0 
累计签到:6 天
连续签到:1 天
DuiJle 发表于 2017-7-11 19:37:33 | 显示全部楼层
好像好棒棒啊
最佳答案
0 

尚未签到

pythonDemo 发表于 2017-7-11 19:48:44 From FishC Mobile | 显示全部楼层
看看
最佳答案
0 
累计签到:1 天
连续签到:1 天
njsmajun 发表于 2017-7-11 20:03:20 | 显示全部楼层
试试看到底如何
最佳答案
2 
累计签到:766 天
连续签到:1 天
太空军校生 发表于 2017-7-11 20:37:58 | 显示全部楼层
学习学习楼主的方法。
最佳答案
220 
累计签到:238 天
连续签到:7 天
SixPy 发表于 2017-7-11 20:41:11 | 显示全部楼层
这样就挺快的了
  1. import numpy as np
  2. def f():return np.sum(np.arange(1,10**8,dtype=np.int64))
复制代码
最佳答案
492 
累计签到:713 天
连续签到:12 天
冬雪雪冬 发表于 2017-7-11 21:02:58 | 显示全部楼层
如何安装numba?
我用pip安装报错。
最佳答案
0 
累计签到:1 天
连续签到:1 天
wolaiye110 发表于 2017-7-11 21:19:44 From FishC Mobile | 显示全部楼层
ggggggggg
最佳答案
492 
累计签到:713 天
连续签到:12 天
冬雪雪冬 发表于 2017-7-11 21:22:02 | 显示全部楼层
我在Anaconda下,用conda install numba安装成功了。但运算上述的例子结果不正确。
  1. Time used: 0.060042619705200195 sec
  2. 887459712
复制代码
最佳答案
15 
累计签到:219 天
连续签到:26 天
小锟 发表于 2017-7-11 22:18:49 | 显示全部楼层
最佳答案
54 
累计签到:349 天
连续签到:1 天
jerryxjr1220  楼主| 发表于 2017-7-11 22:31:03 | 显示全部楼层
冬雪雪冬 发表于 2017-7-11 21:22
我在Anaconda下,用conda install numba安装成功了。但运算上述的例子结果不正确。

我运算的是对的啊,jit只是重新编译了python的代码,但并不会改变你原有的函数,所以对结果是没有影响的。
最佳答案
0 
累计签到:2 天
连续签到:1 天
persever 发表于 2017-7-11 22:34:39 | 显示全部楼层
???、看看 学习一下
最佳答案
163 
累计签到:2239 天
连续签到:3 天
小甲鱼 发表于 2017-7-11 23:46:02 | 显示全部楼层
赞同,必须设精!
最佳答案
0 
累计签到:171 天
连续签到:1 天
哭吧叫吧 发表于 2017-7-12 08:29:21 | 显示全部楼层
最佳答案
55 
累计签到:54 天
连续签到:2 天
ButcherRabbit 发表于 2017-7-12 09:11:11 | 显示全部楼层
看起来很厉害的样子~

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-23 17:34

快速回复 返回顶部 返回列表