<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    11022

    瀏覽量

    207046
  • python
    +關注

    關注

    52

    文章

    4698

    瀏覽量

    83610
  • vscode
    +關注

    關注

    1

    文章

    151

    瀏覽量

    7475

原文標題:python導入包引發的debug緩慢問題探究

文章出處:【微信號:gh_361ab7628207,微信公眾號:Geant4模擬學習交流】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    導入Python庫失敗的缺失庫怎么解決

    在寫 Python 項目的時候,我們可能經常會遇到導入模塊失敗的錯誤:ImportError: No module named xxx或者ModuleNotFoundError: No module
    發表于 11-21 11:46 ?2753次閱讀
    <b class='flag-5'>導入</b><b class='flag-5'>Python</b>庫失敗的缺失庫怎么解決

    Python的pip安裝

    pip是一個安裝和管理 Python 的工具,用它我們可以方便的拉一些依賴的庫下來
    發表于 07-16 08:04

    為什么要重構?如何重組Python?

      目前__init__.py尚不完整。稍后我們將重新訪問該文件?! 〗酉聛?,我們編寫一個測試用例,以確保我們仍然可以像導入一樣導入?! ests.py中的“””  簡單的向
    發表于 09-15 15:28

    什么是python、模塊和庫?

    名為 demo.py 的文件,文件內容如下name="Python編程時光"print("導入成功")直接使用 import 語句就可以導入,導入之后,就可以
    發表于 03-09 16:48

    python花式導的八種方法

    python花式導的八種方法1. 直接 import人盡皆知的方法,直接導入即可>>> import os>>> os.getcwd()'/home/xxx
    發表于 03-10 16:51

    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 ?3011次閱讀

    如何使用python將txt文件導入到mysql的應用實例

    實現思想: 1、python 自動完成在txt 文件中加入自定義標簽(簡單的txt 文件可以不需要) ,2、python 自動完成將含有自定義標簽的txt 文件導入到mysql。除了原始txt 文件
    發表于 09-09 17:50 ?12次下載
    如何使用<b class='flag-5'>python</b>將txt文件<b class='flag-5'>導入</b>到mysql的應用實例

    python包模塊相對導入from和import介紹1

    無包文件**init**.py下,python通過import module導入模塊時,先搜索程序運行主目錄。 程序運行主目錄為運行的py文件所在目錄,而不是執行python.exe時所在目錄。 模塊搜索路徑sys.
    的頭像 發表于 02-21 14:15 ?845次閱讀

    淺析python模塊創建和from及import使用

    python模塊通過用python程序編寫的.py文件即可創建,通過from及import語句導入模塊來使用。
    的頭像 發表于 02-21 14:44 ?626次閱讀

    TSMaster小功能—Python小程序如何導入外部庫

    今天給大家介紹TSMaster功能之Python小程序如何導入外部庫。通過在TSMaster默認的解析器路徑下導入外部庫來介紹,以便我們去使用Python外部庫。TSMaster默認
    的頭像 發表于 08-14 10:06 ?734次閱讀
    TSMaster小功能—<b class='flag-5'>Python</b>小程序如何<b class='flag-5'>導入</b>外部庫

    Python import Hook 實現遠程導入模塊

    所謂的模塊 導入,是指在一個模塊中使用另一個模塊的代碼的操作,它有利于代碼的復用。 也許你看到這個標題,會說我怎么會發這么基礎的文章? 與此相反。恰恰我覺得這篇文章的內容可以算是 Python
    的頭像 發表于 11-02 11:45 ?376次閱讀
    <b class='flag-5'>Python</b> import Hook 實現遠程<b class='flag-5'>導入</b>模塊

    python如何導入模塊

    Python是一種強大的編程語言,它支持模塊化編程,使得開發者可以將代碼分解為可重用且獨立的模塊。模塊是一個包含函數、類和變量等定義的文件,我們可以使用import語句將這些模塊導入到我們的程序
    的頭像 發表于 11-22 14:46 ?605次閱讀

    Python怎么導入math模板

    Python中使用math模塊需要先導入該模塊。math模塊提供了許多數學函數和數值常量,可以在數學計算和統計分析等方面派上用場。下面將詳細介紹如何導入math模塊以及如何使用它的各種功能。 要使
    的頭像 發表于 11-22 14:49 ?983次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>