当前位置: 首页 > 科技观察

干货技能!不需要任何工具,10个案例让Python的执行速度飞速提升

时间:2023-03-16 00:47:55 科技观察

虽然有很多第三方库可以帮助提升Python的运行速度,但是使用起来很麻烦。今天小编想从编程的角度来提高程序的运行速度。1.Python数据类型的巧妙使用在Python程序中,当对list列表进行foriinlist1操作时,时间复杂度为O(n),而对于集合上的foriinset1操作,时间复杂度是O(1)。因此,程序的执行时间会有非常大的差距。2.用迭代器代替列表用迭代器代替列表逐渐成为Python程序员使用的一种方法。使用迭代器操作不仅可以节省时间,更重要的是可以节省大量的内存空间,上图中,使用列表的操作大约占用8M内存,而迭代器只需要88字节。3、使用局部变量代替全局变量在上面的程序中,全局变量z被放入函数myFunc中,局部变量的执行时间比全局变量短,所以程序的执行时间也大大缩短缩短。4.避免“点”操作从上图可以看出,calculateSqrtWithDot函数和calculateSqrt函数的唯一区别在于是否通过点操作调用sqrt函数。每当我们指向一个调用函数的操作时,就会触发特定的方法,比如__getattribute__()和__getattr__(),这样的方法会调用字典操作,会带来时间消耗,所以当程序调用第三方库时这个时候可以尝试使用fromxximportxx的方式来调用。5.避免不必要的类抽象在类中,尽量不要使用装饰器、描述符等操作来包装程序,这会给程序的运行带来负担,所以如果不是必须的,不要像这样包装程序这。6、避免无意义的数据拷贝上面程序中,list6是无意义的数据拷贝,不仅造成程序运行时间的损失,而且浪费内存资源。7.改变值时避免使用临时变量。在上面的程序中,临时变量temp是不需要的,临时变量temp的使用增加了程序的运行时间。8、字符串变量的操作当使用“+”号对字符串str1和str2进行操作时,Python解释器会申请内存空间,并将数据str1和str2分别复制到新的内存空间中,所以当执行N次时对字符串“+”进行操作,会产生N-1个中间结果,每一个中间结果都会被复制到一个新的内存空间中。使用join函数时,join函数会一次性计算出所有需要的内存空间,然后申请内存空间,将所有的字符串元素复制到申请的内存中。9、巧妙地使用if判断在使用if判断时,常用的方法有两种。1if...and....2if...or....为了节省程序的计算时间,在判断ifx和y的时候,x需要是可能性比较高的判断条件错误的。在做ifxory判断时,x需要是True可能性比较高的判断条件。10、用for循环代替while循环在上面的程序中,可以看到同样的函数用for循环代替了while循环,而且for循环的速度比while循环快。小结通过以上10个小案例,我们没有使用任何第三方库和装饰器,单纯从程序优化的角度提升了Python程序的运行速度。大家可以借鉴上面提到的十个小案例,在日常的程序编写过程中提高程序的运行速度。