Python在生物信息学中的应用:让你的程序运行得更快

本文介绍了如何通过优化Python代码结构和使用内建数据类型提升生物信息学程序的运行效率,包括使用函数、消除属性访问、理解变量位置、避免不必要的抽象和数据结构。同时,建议在优化前先关注算法选择,并考虑使用PyPy或Numba等工具进一步加速。
摘要由CSDN通过智能技术生成

程序运行太慢,想要提速,但不使用复杂的技术如 C 扩展或 JIT 编译器。

解决方案

程序优化的第一准则是“不要优化”第二准则是“不要优化那些不重要的部分”。基于这两个原则,如果你的程序运行得很慢,你得先找出影响性能的问题所在。

多数时候我们发现程序把大量的时间花在几个热点位置,比如处理数据的内层循环。一旦确认了这些热点,就可以使用以下各小节中介绍的技术让程序运行得更快。

使用函数

很多人开始使用 Python 时都是用它来编写一些简单的脚本。最开始时,很容易陷入只管编写代码而不重视程序结构的怪圈。例如:

# somescript.py


import sys
import csv


with open(sys.argv[1]) as f:
    for row in csv.reader(f):


    # Some kind of processing
    pass

一个鲜为人知的事实是,像上面这样定义在全局范围内的代码比定义在函数中的代码要慢。速度的差异与局部变量与全局变量的实现机制有关(涉及局部变量的操作要更快)。因此,如果想让程序运行得更快,可以将脚本中的语句放入函数中即可:

# somescript.py
import sys
import csv


def main(filename):
    with open(filename) as f:
        for row in csv.reader(f):
        # Some kind of processing
            pass


main(sys.argv[1])

运行速度的差异与具体执行的任务有关,但根据经验,提升 15% ~ 30% 的情况很常见。

消除属性访问

每次使用句点操作符(.)来访问对象的属性都会带来开销。在底层,这会触发调用特殊的方法。

通常可以用 from module import name 的导入形式以及选择性地使用绑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值