![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python 性能优化
文章平均质量分 59
长行
这个作者很懒,什么都没留下…
展开
-
Python 性能优化|剔除多种不同前后缀的优化
优化后:将多个正则表达式合并到一个正则表达式中,统一一次检查前缀或后缀。原创 2023-10-24 13:22:45 · 67 阅读 · 0 评论 -
Python 性能优化|大量使用正则匹配的优化方法
使用 30 - 40 个正则表达式,逐个匹配了 3200 万条字符串。随着不断增加正则匹配式的数量,性能逐渐下降。在使用 re 模块前,我们已经阅读了文档,了解到对于频繁使用的正则表达式,将其使用。初始化为正则表达式对象可以显著地提高性能。但是,抽取少量样本,使用 cProfile 统计后,仍然发现。更快的方法是,直接调用正则表达式对象的。等方法读取缓存的过程是一样的。通过这块源码,我们了解到,先。解析,将正则表达式对象传给。等方法,与将字符串传给。方法几乎不占用时间。原创 2023-09-26 14:24:45 · 1103 阅读 · 0 评论 -
Python 性能优化|使用单个 numpy 矩阵和使用多个 numpy 向量构造 DataFrame 的性能差异
参数的情况下,基于单个 numpy 矩阵的构造方法的新增内存和内存峰值不变,但是基于多个 numpy 向量的构造方法的新增内存增长为 80144000 B,内存峰值增长为 80376266 B。可以看到,在均不复制的情况下,用多个 numpy 向量构造的 DataFrame 内存占用是更多的,且构造过程中的内存峰值更大。可以看到,使用多个 numpy 向量构造 DataFrame 时,默认是复制数据的。构造过程的新增内存为 521466 B,内存峰值为 726434 B。原创 2023-09-04 22:26:05 · 99 阅读 · 0 评论 -
Python 性能优化|优化 pandas.concat 内存占用方法(避免复制数据)
因为 numpy 的切片方法通常不会导致复制数据,所有我们考虑将 DataFrame 中的每一列分别取出、切片后再重新构造 DataFrame。显然,在上述的操作中,复制了 DataFrame 中的数据。我们希望实现一种不需要复制,而是使用切片视图的方法。的参数,发现并不能有效降低内存,反而使内存峰值翻倍,具体原因待基于源码分析。监控内存,可知这一步操作的返回的 DataFrame 新增内存。因此,返回值的内存约占数据内存的 9.64%。在返回结果中,数据需要使用内存。使用上述逻辑,新增内存为。原创 2023-09-04 22:24:37 · 1222 阅读 · 3 评论 -
Python 性能优化|numpy 删除某一行(列)的各个方法的效率分析
最终结论如下(如下结论同时适用于 Linux 环境和 Windows 环境):方法一:使用 np.delete 函数删除def func1(arr): arr2 = np.delete(arr, DELETE, axis=1) return arr2时间复杂度:O(M×N);空间复杂度:O(M×N);保持删除前原数组顺序;返回参数二维数组的浅拷贝,不是原地操作。方法二:先使用切片器将删除列后的所有列前移,再移除最后一列def func2(arr): arr[:,原创 2021-12-10 13:21:06 · 6851 阅读 · 0 评论 -
Python 性能优化|计算前缀和(itertools.accumulate)
Python性能优化实例原创 2022-11-08 13:10:59 · 398 阅读 · 0 评论 -
Python 性能优化|itertools.chain 和 itertools.chain.from_iterable
Python性能实例原创 2022-11-07 13:32:58 · 226 阅读 · 0 评论 -
Python 性能优化|Python 性能优化实录 (3)
当前 x 的实参为列表类型,y 的实参为 numpy.ndarray 类型,不得不做。持续使用矩阵计算,还避免后续还需将列表转为矩阵。持续使用矩阵计算,还避免后续还需将列表转为矩阵。处理,后续将通过调整调用位置避免这个判断。在优化 6 中已保证两个参数输入均为。原创 2023-04-19 13:10:25 · 224 阅读 · 0 评论 -
Python 性能优化|cProfile 使用技巧
cProfile 提供了 Python 程序的稳定性性能分析;即通过监控所有函数调用、函数返回和异常事件,并对这些事件之间的间隔进行精确计时。实现统计程序的各个部分执行的频率和时间。cPorfile 的性能分析往往可以使用增加很小的处理开销,提供有关 Python 程序执行的大量运行时的统计信息。原创 2023-04-05 12:35:36 · 3474 阅读 · 0 评论 -
Python 性能优化|多线程读取文件
使每一个切分点中尚未结束的行一定归属上一进程 / 线程而不是下一进程 / 线程,从而保证每一个进程 / 线程遍历的每一行都是完整且互不重复的。多进程可以实现逐行遍历同一个文件(可以保证每一个进程遍历的行都是完整且互不重复的),且可以提高遍历性能。通过统计读取到的字符串长度,计算当前文件指针位置,从而避免在每次遍历中均需使用。定义每个线程 / 进程的遍历函数如下:通过捕获。,所以单线程时的速度相较于直接读取会更慢。,所以单进程时的速度相较于直接读取会更慢。因为在每一行的遍历中需要增加一次。原创 2023-03-22 13:06:35 · 3309 阅读 · 0 评论 -
Python 性能优化|Python 性能优化实录 (2)
将数据存入 Kafka 时压缩处理提高并行度,避免队列等待时间(原本等待队列清空才继续,改为队列数量较少时就继续)通过 Cprofile 测试耗时最大的逻辑将 Python 原生 json 包替换为 ujson 包将逐个添加到深层嵌套字典底层的逻辑,改为先构造深层字典,然后直接将深层字典添加到浅层字典在任务构造进程中,增加线程间共享的缓存队列,令线程 1 将读取任务并写入缓存队列,线程 2 直接将缓存队列的任务写入进程间共享的计算任务队列;从而必须要再等待全部任务读取完成后才将任务添加到计算任务原创 2023-03-21 21:02:48 · 95 阅读 · 0 评论 -
Python 性能优化|各计算滑动平均值方法性能比较
滑动平均滤波法:将连续取 n 个采样值看成一个队列(先进先出);每次先计算队列中 n 个数据的算术平均值,然后将新数据插入队尾,并移除原来的队首数据;直至没有新数据。这样,就得到了滤波结果。下面,我们尝试在 Python 中使用尽可能高的速度完成滑动平均值的计算。我们使用 numpy 构造一个长度为 10000 的随机数组作为测试数据;原创 2023-03-19 19:21:47 · 1700 阅读 · 0 评论 -
Python 性能优化|Python各方法读取csv性能比较
结论:在多线程分段读取文件的情况下,`pandas` 库的 `read_csv` 方法的性能略优于 `csv` 库的 `reader` 类,显著优于 `csv` 库的 `DictReader` 类。原创 2022-12-04 09:31:39 · 1291 阅读 · 0 评论 -
Python 性能优化|Python 性能优化实录 (1)
Python 性能优化实录原创 2022-11-28 12:51:02 · 713 阅读 · 0 评论 -
Python 性能优化|元素极少时 list 和 set 的查找速度
Python性能优化原创 2022-11-18 13:26:12 · 1017 阅读 · 0 评论 -
Python 性能优化|计算 numpy 数组首尾为 0 的数量
Python性能优化实例原创 2022-11-16 20:55:44 · 885 阅读 · 0 评论