python虽然容易上手,但是执行效率一直为人诟病。提升执行效率的方案越来越多,今天试试codon
首先按照工程的介绍执行安装codon
$ /bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)"
以工程中的例子,加上运行时间的打印
$ cat prime.py
from sys import argv
import time
def is_prime(n):
factors = 0
for i in range(2, n):
if n % i == 0:
factors += 1
return factors == 0
limit = int(argv[1])
total = 0
start = time.time()
for i in range(2, limit):
if is_prime(i):
total += 1
end = time.time()
this_time = str(end - start)
print(total)
print(this_time)
这个程序是验证指定整数范围内质数的个数。先用原生python计算2万以内的质数个数
$ python3 prime.py 20000
2262
13.66133427619934
然后使用conda运行,时间从13秒多直接缩短为2秒
$ codon run prime.py 20000
2262
2.08852
如果加上优化,就到了2秒之内了
$ codon run -release prime.py 20000
2262
1.91528
如果利用parallelize ,在for循环前加上一行
@par(schedule='dynamic', chunk_size=100, num_threads=16)
for i in range(2, limit):
这次运行起来,竟然缩短为0.3秒多一点!!
$ codon run prime.py 20000
2262
0.343631
$ codon run -release prime.py 20000
2262
0.315421
由此可见,codon对于python执行速度的提升真的是太明显了!
当然codon也有自己的缺点,除了对很多的python包尚不支持外,就连想把total和花费时间打印到一行,尝试了f’',%,format,都不行。不过瑕不掩瑜,codon还是一种很好提升python运行效率的工具。