广州设计网站公司,正确建设企业网站,网站在排版有哪些方法,wordpress 删除仪表盘对于数据科学家而言#xff0c;热爱Python的理由数不胜数。但你是否也曾问过这样的问题#xff1a;Python和C或C等更专业的低级编程语言究竟有何不同呢?我想这是很多数据科学家或者Python用户曾经问过或者将来会问自己的问题。Python和C类语言之间存在许多区别#xff0c;本…对于数据科学家而言热爱Python的理由数不胜数。但你是否也曾问过这样的问题Python和C或C等更专业的低级编程语言究竟有何不同呢?我想这是很多数据科学家或者Python用户曾经问过或者将来会问自己的问题。Python和C类语言之间存在许多区别本文将通过一个十分简单的例子向你展示与Python相比C究竟有多快。为了说明这种区别本文选择一个简单实用而非想象虚构的任务生成固定值为“k”的所有可能DNA k-mers。选择该示例是因为与基因组相关的许多数据处理和任务分析(例如k-mers生成)都是计算密集型的而这同样也是很多生物信息学领域的数据科学家对C感兴趣的原因。请注意本文目标并不是以最有效的方式比较C和Python。这两种代码均可采用更高效的方式和更优化的方法编写。本文的唯一目标就是比较这两种语言在使用完全相同的算法和指令时的速度。DNA K-mers简介DNA是一种称为核苷酸的长链单位。在DNA中共有4种核苷酸类型分别用字母A、C、G和T表示。人类(更准确地说是智人)拥有核苷酸对30亿个。例如人类DNA的一小部分可能类似于ACTAGGGATCATGAAGATAATGTTGGTGTTTGTATGGTTTTCAGACAATT在此示例中如果从该字符串中选择任意4个连续的核苷酸(即字母)它将是一个长度为4的k-mer(可称之为4-mer)。以下便是从此示例中衍生出来的一些4-mers例子ACTACTAGTAGGAGGGGGGA等。难点挑战本文以生成所有可能的13-mers为例从数学上讲这是一个带有替换的排列问题。因此共有4¹³个(67108864)可能的13-mers。下面将使用一个简单的算法在C和Python中生成结果。方案比较为了方便比较C和Python在此特定挑战中的优劣我在两种语言中使用了完全相同的算法。这两种代码均有意设计地简单而相似。同时避免使用复杂的数据结构或第三方包或库。第一段代码采用Python编写。运行Python代码生成全部13-mers共6700万个大约需要61.23秒。为了公平比较我注释掉了显示k-mers的行。如果想在生成k-mers时显示它们也可以取消对这两行的注释。注意显示全部k-mers耗时很长。如有需要请操作CTRLC中止代码。现在来看看C中同样的算法编译后运行C代码生成全部13-mers共6700万个大约需要2.42秒。这意味着运行相同算法Python用时是C的25倍多。然后对14-mers和15-mers重复进行此实验。汇总结果如下表所示比较生成13-、14-和15-mers的Python和C运行结果。显然C比Python快得多。对于大多数程序员和数据科学家而言这是共识。但该示例表明这种差异十分显著。本示例并没有使用CPU或GPU并行化因其必须针对相应类型的问题(密集并行难题)进行。此外示例也没有大量涉及内存。如果将运行结果进行存储(出于某些特定原因)那么使用内存管理在运行C和Python时将产生更显著的差异。此示例和数以千计的其他事实表明在处理大量数据或指数增长的过程中身为数据科学家你应该了解C类语言。