这10个python性能调优的小技巧,你知道几个?(代码片段)

Python学习与数据挖掘 Python学习与数据挖掘     2023-02-05     439

关键词:

大家好,今天这篇文章关于Python性能调优的10个小技巧,每天花5-10分钟阅读我的文章,对你技术提升一定会有帮助。喜欢欢迎关注、点赞、收藏。文末提供技术交流群。

1 多多使用列表生成式

替换下面代码:

cube_numbers = []
  for n in range(0,10):
    if n % 2 == 1:
      cube_numbers.append(n**3)

为列表生成式写法:

cube_numbers = [n**3 for n in range(1,10) if n%2 == 1]

2 内置函数

尽可能多使用下面这些内置函数:

3 尽可能使用生成器

单机处理较大数据量时,生成器往往很有用,因为它是分小片逐次读取,最大程度节省内存,如下网页爬取时使用yield

import requests
import re

def get_pages(link):
  pages_to_visit = []
  pages_to_visit.append(link)
  pattern = re.compile('https?')
  while pages_to_visit:
    current_page = pages_to_visit.pop(0)
    page = requests.get(current_page)
    for url in re.findall('<a href="([^"]+)">', str(page.content)):
      if url[0] == '/':
        url = current_page + url[1:]
      if pattern.match(url):
        pages_to_visit.append(url)
    # yield
    yield current_page
webpage = get_pages('http://www.example.com')
for result in webpage:
  print(result)

4 判断成员所属关系最快的方法使用 in

for name in member_list:
  print(' is a member'.format(name))

5 使用集合求交集

替换下面代码:

a = [1,2,3,4,5]
b = [2,3,4,5,6]

overlaps = []
for x in a:
  for y in b:
    if x==y:
      overlaps.append(x)

print(overlaps)

修改为set和求交集:

a = [1,2,3,4,5]
b = [2,3,4,5,6]

overlaps = set(a) & set(b)

print(overlaps)

6 多重赋值

Python支持多重赋值的风格,要多多使用

first_name, last_name, city = "Kevin", "Cunningham", "Brighton"

7 尽量少用全局变量

Python查找最快、效率最高的是局部变量,查找全局变量相对变慢很多,因此多用局部变量,少用全局变量。

8 高效的itertools模块

itertools模块支持多个迭代器的操作,提供最节省内存的写法,因此要多多使用,如下求三个元素的全排列:

import itertools
iter = itertools.permutations(["Alice", "Bob", "Carol"])
list(iter)

9 lru_cache 缓存

位于functools模块的lru_cache装饰器提供了缓存功能,如下结合它和递归求解斐波那契数列第n:

import functools

@functools.lru_cache(maxsize=128)
def fibonacci(n):
  if n == 0:
    return 0
  elif n == 1:
    return 1
  return fibonacci(n - 1) + fibonacci(n-2)

因此,下面的递归写法非常低效,存在重复求解多个子问题的情况:

def fibonacci(n):
  if n == 0: # There is no 0'th number
    return 0
  elif n == 1: # We define the first number as 1
    return 1
  return fibonacci(n - 1) + fibonacci(n-2)

10 内置函数、key和itemgetter

上面提到尽量多使用内置函数,如下对列表排序使用keyoperator.itemgetter

import operator
my_list = [("Josh", "Grobin", "Singer"), ("Marco", "Polo", "General"), ("Ada", "Lovelace", "Scientist")]
my_list.sort(key=operator.itemgetter(0))
my_list

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

关于java性能调优的11个简单技巧

...多数据库知识源 / Java联盟相信大多数的小伙伴都会觉着性能优化是一件很复杂的事,那么是不是呢?优化应用程序获得最佳性能并不是一件容易的事。它需要一定的经验和知识。那么,我们现阶段还不具备这样的经... 查看详情

「干货」让python性能起飞的15个技巧,你知道几个呢?

参考技术A前言Python一直以来被大家所诟病的一点就是执行速度慢,但不可否认的是Python依然是我们学习和工作中的一大利器。本文总结了15个tips有助于提升Python执行速度、优化性能。关于Python如何精确地测量程序的执行时间,... 查看详情

9个java性能调优技巧,yyds!

...”,和你一起掌握更多数据库知识大多数开发者认为性能优化是一个复杂的话题,它需要大量的工作经验和相关知识理论。好吧,这也不完全错。优化一个应用做到性能最优化可能不是件容易的任务,但是这并不... 查看详情

11个提高css技巧的小知识,你知道吗?

前端开发越来越侧重于效率和性能,使用LESS和SCSS资源的预处理器为我们前端CSS编写工作提供了很大的便利。但是也有很多简单的方法可以编写小巧快速的CSS代码,提高开发效率并解决许多常见的问题。1.使用CSSreset像normalize.css... 查看详情

java中的5个代码性能提升技巧,最高提升近10倍(代码片段)

...已经收录,欢迎Star。这篇文章介绍几个Java开发中可以进行性能优化的小技巧,虽然大多数情况下极致优化代码是没有必要的,但是作为一名技术开发者,我们还是想追求代码的更小、更快,更强。如果哪天你发现... 查看详情

jvm调优技巧-内存抖动xms和xmx参数为什么要设置相同的值(代码片段)

前言在网上看到大部分的帖子都有介绍性能调优的案例,其中有一项就是告诉你Xms和Xmx参数一定要设置成相同的,这样就可以达到优化的目的,就像这样-Xms1024m-Xmx1024m但是却没说为什么要这么设置,那么这篇文章... 查看详情

jvm调优技巧-内存抖动xms和xmx参数为什么要设置相同的值(代码片段)

前言在网上看到大部分的帖子都有介绍性能调优的案例,其中有一项就是告诉你Xms和Xmx参数一定要设置成相同的,这样就可以达到优化的目的,就像这样-Xms1024m-Xmx1024m但是却没说为什么要这么设置,那么这篇文章... 查看详情

java中的5个代码性能提升技巧,最高提升近10倍(代码片段)

...已经收录,欢迎Star。这篇文章介绍几个Java开发中可以进行性能优化的小技巧,虽然大多数情况下极致优化代码是没有必要的,但是作为一名技术开发者,我们还是想追求代码的更小、更快,更强。如果哪天你发现... 查看详情

提高python代码的可读性,你需要知道这10个技巧(代码片段)

Python的可读性和简单性是其广受欢迎的两大原因,本文介绍20个常用的Python技巧来提高代码的可读性,并能帮助你节省大量时间,下面的技巧将在你的日常编码练习中非常实用。注:文末提供Python技术交流群1.字符... 查看详情

java中的5个代码性能提升技巧,最高提升近10倍(代码片段)

这篇文章介绍几个Java开发中可以进行性能优化的小技巧,虽然大多数情况下极致优化代码是没有必要的,但是作为一名技术开发者,我们还是想追求代码的更小、更快,更强。如果哪天你发现程序的运行速度不尽... 查看详情

dubbo并发调优的几个参数(代码片段)

消费端调优:?一、connections?这个参数可以在服务提供端发布服务的时候配置,也可以在消费端引用服务的时候配置,但是这个值是只对消费端生效的,所以一般是服务提供端不建议配置,如果配置,请斟酌一下,详情请查看《... 查看详情

针对python初学者,这13个好用到起飞的小技巧!(代码片段)

Python是当今广泛使用的编程语言之一,在数据、科学计算Web开发、游戏开发和构建桌面图形界面等各个领域、应用。C++等其他编程语言的开发成果以及与英语类似的命令而广受欢迎。如果你也是Python学习爱好者,今... 查看详情

hive参数与性能企业级调优(代码片段)

...架之一。但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hive性能调优是我们大数据从业者必须掌握的技能。本文将给大家讲解Hive性能调优的一些方法及技巧。Hive性能调优的... 查看详情

hive参数与性能企业级调优(代码片段)

...架之一。但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hive性能调优是我们大数据从业者必须掌握的技能。本文将给大家讲解Hive性能调优的一些方法及技巧。Hive性能调优的... 查看详情

hive参数与性能企业级调优(代码片段)

...架之一。但是如果我们只局限于会使用Hive,而不考虑性能问题,就难搭建出一个完美的数仓,所以Hive性能调优是我们大数据从业者必须掌握的技能。本文将给大家讲解Hive性能调优的一些方法及技巧。Hive性能调优的... 查看详情

string性能提升10倍的几个方法!(源码+原理分析)(代码片段)

...,没有之一。那么提高String的运行效率,无疑是提升程序性能的最佳手段。我们本文将从String的源码入手,一步步带你实现字符串优化的小目标。不但教你如何有效的使用字符串,还为你揭晓这背后的深层次原因。本文涉及的知... 查看详情

运用好python处理文档的小技巧,让你成为女神心中superstar!

今天小编给大家带来了一篇,主要运用Python_docx模块处理word文档的基本技巧来介绍,其中最主要的是如何对图片进行提取和写入。 python已有几个模块可处理word文档、excel表格、以及ppt演示文稿。首先,汇总列出各模块对不同... 查看详情

真实世界的 Clojure 性能调优技巧?

】真实世界的Clojure性能调优技巧?【英文标题】:RealworldClojureperformancetuningtips?【发布时间】:2011-04-0508:44:16【问题描述】:我看到Clojure应用程序的“某些”部分出现严重的减速。关于如何对clojure应用程序进行性能调优,有人... 查看详情