提速Python

运算速度对于生物信息来说非常重要,因为大部分情况下,我们需要自己写代码来提取数据和处理格式,再加上生信领域内的原始数据动辄几千万行,最少也得数万行的基因注释,所以最快地拿到想要的结果才是老板们想要的。

解释型语言(python,perl等)的平均速度远远不如编译型语言(C,C++,Java等),但解释型语言胜在语法简单明了,代码量少,效率高,很快能处理数据、分析并得到结果,虽然没法比速度,但是自己也不能自暴自弃吧,从数据结构到算法都可以加快程序的运算速度。本文不讨论算法,只通过数据结构等方面提速一下python的运算速度。

实例以下代码均在jupyter中测试速度,不同硬件配置运行速度不一致

字符串链接(列表变字符串同样的道理)

%%timeit

tp = (str(i) for i in range(1000))

strs = ''

for i in tp:

strs += i

# 585 µs ± 225 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%%timeit

tp = (str(i) for i in range(1000))

''.join(tp)

# 223 µs ± 1.07 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

推导式

%%timeit

a = []

for i in range(1000):

a.append(i**2)

# 376 µs ± 2.95 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%%timeit

[i**2 for i in range(1000)]

# 344 µs ± 2.51 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

对列表去重

%%timeit

a = [1,2,2,12,1,1,2,1,2,1,2,12,12,1,22]

d = {}

for i in a:

d[i] = 0

d.keys()

# 1.04 µs ± 298 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

%%timeit

a = [1,2,2,12,1,1,2,1,2,1,2,12,12,1,22]

set(a)

# 527 ns ± 195 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

for与while

%%timeit

a = 1000

s = 0

while a > 0:

s += a

a -= 1

# 94.2 µs ± 34.8 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%%timeit

s = 0

for i in range(1000):

s += i

# 46.5 µs ± 194 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

查找元素(包括列表)

%%timeit

a = range(1000)

d = dict((i,1) for i in a)

500 in d

# 127 µs ± 43.1 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%%timeit

a = range(1000)

s = set(a)

500 in s

# 21 µs ± 79 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

循环索引

%%timeit

a = range(1000)

for i in range(len(a)):

a[i]

# 164 µs ± 55.1 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%%timeit

a = range(1000)

for i, v in enumerate(a):

v

# 41.6 µs ± 470 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

以上就是最基本的加速方法,进阶的就属于第三方模块加速: 1. 对于整体python加速,使用numba或pypy(不支持部分模块) 2. 使用由C语言实现的包加速 3. 对pandas类型加速,使用dask 4. 计算正常数据或矩阵数据都可以使用numpy加速 5. IO密集型任务,使用多线程 6. CPU密集型任务,使用多进程,对于生信而言,这个是我们常用的 7. 加速时经常用到的内置包:collections,itertools等等

上面的列表每一个几乎都可以单独写一篇长篇大论了,对数据分析或生信分析来讲,用到的最多也就是数据结构要写好,其次就是numpy,多进程和内置包吧,后面的事情后面再说。

python 生信分析_提速Python!无论生信分析还是数据分析相关推荐

  1. 用python进行营销分析_用python进行covid 19分析

    用python进行营销分析 Python is a highly powerful general purpose programming language which can be easily l ...

  2. anaconda中的python如何进行关联分析_浅析python,PyCharm,Anaconda三者之间的关系

    一.它们是什么? Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C,Java,C++等,一种编程语言. 2.Anaconda Anaconda指的是一个开源的Pytho ...

  3. python做股票分析_利用Python进行股票投资组合分析(调试)

    pythonsp500-robo-advisor-edition Python for Financial Analyses 需要的镜像文件和数据--Robo Advisor edition. 小结 ...

  4. python电视剧口碑分析_小案例(七):口碑分析(python)

    微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings <菜鸟侦探挑战数学分析>小案例,python实现第七弹 案件回顾 商业街口碑分析 1,顾客在网络上会发表对商品或 ...

  5. python 生存分析_用python教程进行生存分析何时何地

    python 生存分析 机器学习 , 编程 , 统计 (Machine Learning, Programming, Statistics) Author(s): Pratik Shukla 作者:P ...

  6. python 小说人物分析_用Python来看金庸先生的小说,这一生向大侠致敬

    从小就是武侠迷,可以说是看着金庸先生的作品长大的,无论是书还是电视剧都非常着迷,飞雪连天射白鹿,笑书神侠倚碧鸳.金老一生共著15部武侠作品,在那个电子产品和互联网尚未普及的年代带给我们太多的欢乐和回忆 ...

  7. python微博评论情感分析_基于Python的微博情感分析系统设计

    2019 年第 6 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Python 的微博情感分析系统设计 王 欣 周文龙 (武汉工程大学邮电 ...

  8. python实习内容过程_对Python实习的简单分析,也许可以帮到你

    昨天对实习僧抓取了90条Python实习的数据,今天做一个简单的分析. 因为实习僧网站上关于Python实习岗位太少,所以以下内容进仅供娱乐. 各个地点的平均日工资,南京竟然比上海还高.回去筛选一看, ...

  9. python微博爬虫分析_基于Python的新浪微博爬虫研究

    基于 Python 的新浪微博爬虫研究 吴剑兰 (江苏警官学院,江苏 南京 210031 ) [摘 要] 摘 要:对比新浪提供的 API 及传统的爬虫方式获取微博的优缺点, 采用模拟登陆和网页解析技术 ...

  10. python实际案例分析_将python运用到实际案例分析中(第四关作业)

    将python运用到实际案例分析中(第四关作业) 本章节主要分为两个部分,一是理解数据分析,二是分析销售数据案例析销售数据案例 一.理解数据分析 此处又分为一维数据分析.二维数据分析 一维数据分析用N ...

最新文章

  1. html文件显示不了box,Workbox.js registerNavigationRoute找不到/加载html文件
  2. 【django】HttpResponse对象
  3. 个人永久性免费-Excel催化剂功能第28波-工作薄瘦身,安全地减少非必要冗余
  4. Spring AOP XML配置及注解配置
  5. 利用JDBC连接数据库(MySQL)
  6. Spark对Kafka两种连接方式的对比——Receiver和Direct
  7. python send 案例_python之pexpect实现自动交互的例子
  8. GPT(Improving Language Understandingby Generative Pre-Training) 论文笔记
  9. android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果 -电脑资料...
  10. 新手必看!电脑文件管理八条小技巧
  11. day19【前台】支付
  12. Daily Scrum02 12.17
  13. Math类的常用方法
  14. IT人员应该掌握的30种技能
  15. Debian——roundcube报错及解决方法
  16. 【flask高级】结合源码解决flask经典报错:Working outside of application context
  17. 安装爬虫框架Scrapy,安装后运行不了~
  18. Git三板斧【linux环境】
  19. IT青年们如何突围?要接地气
  20. D - Milking Time

热门文章

  1. 高性能计算机介绍,曙光个人高性能计算机介绍
  2. 计算机tcpip协议主要功能,tcp协议的主要功能
  3. 震旦打印机扫描显示服务器连接错误,震旦打印机Scan2me扫描失败(exchange邮箱)...
  4. vue 项目 跨域问题
  5. 线性代数学习笔记——第二十四讲——向量及其线性运算
  6. 硬链接(hard link)与软链接(soft link/symbolic link)
  7. 给个华为服务器账号和密码忘了怎么办啊,华为路由器登陆用户名和密码忘了怎么办?...
  8. ENSP配置华为路由器配置SSH登陆
  9. mecrosoft excel的单元格引用
  10. 【托业】【新托业TOEIC新题型真题】学习笔记10-题库七-P7