何为计算密集型任务
下面贴上网上找到的描述计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。
计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。
简单总结一下就是,计算密集型任务吃CPU。Python是脚本语言效率低,做计算密集型任务很弱。可以用mutliprocess的方式在一定程度内提升运行效率。但还是不如C。
C语言是编译型语言,需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。而Python是解释型语言,解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。但是每次运行的时候都要解释一遍,性能上不如编译型语言。
所以拿Python来和C比性能可以说是拿鸡蛋碰石头。但是由于Python语言的简洁性、易读性以及可扩展性,越来越多的领域如Web开发、科学计算和统计、人工智能等等等都可以见到Python的身影。那么假如由于某些原因而不得不选择使用Python作为计算密集型任务的开发语言时