0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅析python导入包引发的debug缓慢问题

Geant4模拟学习交流 来源:蒙卡模拟与编程技术杂谈 2024-05-01 09:37 次阅读

先上代码

fromopenpyxlimportload_workbook
importnumpyasnp
importpandasaspd
importxlwingsasxw
importcsv
importjieba
importpangu
importre

print('hello')

这个样例,在print行加一个断点,即可测试出缓慢效果

Linux下的虚拟环境启用

开始用win来测试效果,发现很慢,难道和系统有关系吗,于是进行linux下的python代码debug尝试。

manjaro或者archlinux用pip安装报错,比如

0b57740e-ffad-11ee-a297-92fbcf53809c.png

处理这个情况的设置好vscode,做好如下勾选

0b7310ba-ffad-11ee-a297-92fbcf53809c.png

这样debug的时候就可以有效加载虚拟环境。

使用cprofile进行性能跟踪

importcProfile
importpstats
#importsome_module

defimport_module():
#fromopenpyxlimportload_workbook
importjieba

defprofile_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()

发现

0b8123b2-ffad-11ee-a297-92fbcf53809c.png

/home/qiangge/.conda/envs/py031105/lib/python3.12/site-packages/jieba/finalseg/prob_emit.py

这里的文件共35000多行,因为这个吗?怀疑是多线程问题导致。

非debug模式下,也就是runcode模式下,并不会出现这个prob_emit.py的加载。这里估计是多线程在debug下会有阻塞问题。

小结

并没有彻底找出根因,但是很显然,有如下结论

导入包,对于运行没有性能问题

导入包,对于不同的包,性能影响很显著

可能是多线程引发了debug性能问题。


审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11304

    浏览量

    209507
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84689
  • vscode
    +关注

    关注

    1

    文章

    155

    浏览量

    7713

原文标题:python导入包引发的debug缓慢问题探究

文章出处:【微信号:gh_361ab7628207,微信公众号:Geant4模拟学习交流】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    导入Python库失败的缺失库怎么解决

    在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named xxx或者ModuleNotFoundError: No module
    发表于 11-21 11:46 2937次阅读
    <b class='flag-5'>导入</b><b class='flag-5'>Python</b>库失败的缺失库怎么解决

    什么是python、模块和库?

    名为 demo.py 的文件,文件内容如下name="Python编程时光"print("导入成功")直接使用 import 语句就可以导入导入之后,就可以
    发表于 03-09 16:48

    python常规与命名空间

    python常规与命名空间1. 常规包在 Python 3.3 之前或者说 Python 2 中,一个
    发表于 03-11 15:46

    python 导入的三个冷门知识点

    中使用 __all__ 来控制想要被其他模块导入的变量。# profile.pyname='小明'age=18__all__=['name']打开 python console 验证一下>>
    发表于 03-14 16:33

    Python imports指南:Python导入有更好的理解

    而且因为Python很棒,我们可以在__init__模块中做很多事情,甚至是很奇怪的事情。假设我们不喜欢显式导入,并且希望将所有模块符号上升到级别,这样我们就不必记住实际的模块名称。
    的头像 发表于 05-01 17:48 3140次阅读

    python、模块和库是什么

    有一个名为 demo.py 的文件,文件内容如下 name="Python编程时光"print("导入成功") 直接使用 import 语句就可以导入导入之后,就可以使用 模块名.变
    的头像 发表于 03-09 16:47 2326次阅读

    详解python常规与命名空间

    python常规与命名空间 1. 常规Python 3.3 之前或者说 Python
    的头像 发表于 03-11 15:46 3426次阅读

    Python脚本集成到GUI工具

    本篇将此脚本进行优化,将集成到 Python 的 GUI 工具(Tkinter),并且可以将结果数据导入到 Excel 和 TXT 文件里。
    的头像 发表于 02-15 16:40 1135次阅读

    python模块相对导入from和import介绍1

    文件**init**.py下,python通过import module导入模块时,先搜索程序运行主目录。 程序运行主目录为运行的py文件所在目录,而不是执行python.e
    的头像 发表于 02-21 14:15 1036次阅读

    python模块相对导入from和import介绍2

    python2.7先搜索当前目录,再搜索sys.path模块搜索路径。即先相对再绝对。 本示例在交互模式执行,非文件模式执行。
    的头像 发表于 02-21 14:17 712次阅读

    简述python模块import和from及all

    python指定导入目录路径,称为导入。 通过import和from导入模块。
    的头像 发表于 02-21 14:20 1252次阅读

    Python导入操作和本质

    导入操作和本质 常见方式如下: import a.aa.module_AA : 按模块路径导入 在使用时,必须加完整名称来引用. 比如: a.aa.module_AA.fun_AA() from
    的头像 发表于 09-12 17:41 900次阅读

    python如何导入模块

    Python是一种强大的编程语言,它支持模块化编程,使得开发者可以将代码分解为可重用且独立的模块。模块是一个包含函数、类和变量等定义的文件,我们可以使用import语句将这些模块导入到我们的程序中
    的头像 发表于 11-22 14:46 958次阅读

    Python怎么导入math模板

    Python中使用math模块需要先导入该模块。math模块提供了许多数学函数和数值常量,可以在数学计算和统计分析等方面派上用场。下面将详细介绍如何导入math模块以及如何使用它的各种功能。 要使
    的头像 发表于 11-22 14:49 2404次阅读

    如何用import导入一个

    Python中,import语句用于导入代码所需的模块或。模块是Python代码的集合,而是包含模块和其他
    的头像 发表于 11-22 14:59 1163次阅读