先上代码
from openpyxl import load_workbook import numpy as np import pandas as pd import xlwings as xw import csv import jieba import pangu import re print('hello')
这个样例,在print行加一个断点,即可测试出缓慢效果
Linux下的虚拟环境启用
开始用win来测试效果,发现很慢,难道和系统有关系吗,于是进行linux下的python代码debug尝试。
manjaro或者archlinux用pip安装报错,比如
处理这个情况的设置好vscode,做好如下勾选
这样debug的时候就可以有效加载虚拟环境。
使用cprofile进行性能跟踪
import cProfile import pstats # import some_module def import_module(): # from openpyxl import load_workbook import jieba def profile_import(): # 创建一个性能分析器对象 profile = cProfile.Profile() profile.enable() # 运行要分析的函数 import_module() # 停止性能分析 profile.disable() # 生成一个性能报告 stats = pstats.Stats(profile) # stats.sort_stats("cumulative").print_stats(10) # 打印前10行统计信息 stats.sort_stats("cumulative").print_stats() # 打印前10行统计信息 if __name__=="__main__": profile_import()
发现
/home/qiangge/.conda/envs/py031105/lib/python3.12/site-packages/jieba/finalseg/prob_emit.py
这里的文件共35000多行,因为这个吗?怀疑是多线程问题导致。
非debug模式下,也就是runcode模式下,并不会出现这个prob_emit.py的加载。这里估计是多线程在debug下会有阻塞问题。
小结
并没有彻底找出根因,但是很显然,有如下结论
导入包,对于运行没有性能问题
导入包,对于不同的包,性能影响很显著
可能是多线程引发了debug性能问题。
全部0条评论
快来发表一下你的评论吧 !