优化 Python 分析代码(数据分析 / 数值计算 / 脚本逻辑)通常可以从算法、数据结构、工具库、并行化、代码风格几个层面入手。下面按“实用优先级”给你一套可落地的优化思路。
最重要的一步:先测再改
import cProfile
cProfile.run("your_function()")
或用更简单的方式:
import time
start = time.time()
your_function()
print(time.time() - start)
工具推荐:
cProfile:函数级耗时line_profiler:逐行耗时memory_profiler:内存占用❌ 慢:
result = []
for i in range(len(df)):
result.append(df.iloc[i]["a"] + df.iloc[i]["b"])
✅ 快:
result = df["a"] + df["b"]
核心库:
❌:
[a * 2 for a in list(range(1000000))]
✅:
import numpy as np
np.arange(1000000) * 2
df.append()(非常慢)list.index()+✅ 改进:
# 字符串
"".join(parts)
# 数据累计
rows = []
for x in data:
rows.append(x)
df = pd.DataFrame(rows)
def gen_data():
for i in range(10**7):
yield i
from multiprocessing import Pool
with Pool(4) as p:
results = p.map(func, data)
from concurrent.futures import ThreadPoolExecutor
优先用它们,而不是自己写并行。
set 查重,不用 listdict 做映射,不用 if-eliflocal 变量比 global 快numba 加速数值函数:from numba import njit
@njit
def f(x):
return x * x
优化重点应是:
joblib 缓存:from joblib import Memory
mem = Memory("cache")
✅ 是否用了 pandas / numpy
✅ 是否避免了 for 循环
✅ 是否先 profiling
✅ 是否缓存了重复计算
✅ 是否用对并行方式
如果你愿意,可以把你的分析代码或场景(比如:数据量、瓶颈在哪、是否用 pandas)发出来,我可以直接帮你改一版优化后的代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。