先上代碼
fromopenpyxlimportload_workbook importnumpyasnp importpandasaspd importxlwingsasxw importcsv importjieba importpangu importre print('hello')
這個(gè)樣例,在print行加一個(gè)斷點(diǎn),即可測(cè)試出緩慢效果
Linux下的虛擬環(huán)境啟用
開始用win來測(cè)試效果,發(fā)現(xiàn)很慢,難道和系統(tǒng)有關(guān)系嗎,于是進(jìn)行l(wèi)inux下的python代碼debug嘗試。
manjaro或者archlinux用pip安裝報(bào)錯(cuò),比如

處理這個(gè)情況的設(shè)置好vscode,做好如下勾選

這樣debug的時(shí)候就可以有效加載虛擬環(huán)境。
使用cprofile進(jìn)行性能跟蹤
importcProfile
importpstats
#importsome_module
defimport_module():
#fromopenpyxlimportload_workbook
importjieba
defprofile_import():
#創(chuàng)建一個(gè)性能分析器對(duì)象
profile=cProfile.Profile()
profile.enable()
#運(yùn)行要分析的函數(shù)
import_module()
#停止性能分析
profile.disable()
#生成一個(gè)性能報(bào)告
stats=pstats.Stats(profile)
#stats.sort_stats("cumulative").print_stats(10)#打印前10行統(tǒng)計(jì)信息
stats.sort_stats("cumulative").print_stats()#打印前10行統(tǒng)計(jì)信息
if__name__=="__main__":
profile_import()
發(fā)現(xiàn)

/home/qiangge/.conda/envs/py031105/lib/python3.12/site-packages/jieba/finalseg/prob_emit.py
這里的文件共35000多行,因?yàn)檫@個(gè)嗎?懷疑是多線程問題導(dǎo)致。
非debug模式下,也就是runcode模式下,并不會(huì)出現(xiàn)這個(gè)prob_emit.py的加載。這里估計(jì)是多線程在debug下會(huì)有阻塞問題。
小結(jié)
并沒有徹底找出根因,但是很顯然,有如下結(jié)論
導(dǎo)入包,對(duì)于運(yùn)行沒有性能問題
導(dǎo)入包,對(duì)于不同的包,性能影響很顯著
可能是多線程引發(fā)了debug性能問題。
-
Linux
+關(guān)注
關(guān)注
88文章
11628瀏覽量
217994 -
python
+關(guān)注
關(guān)注
57文章
4858瀏覽量
89591 -
vscode
+關(guān)注
關(guān)注
1文章
171瀏覽量
9007
原文標(biāo)題:python導(dǎo)入包引發(fā)的debug緩慢問題探究
文章出處:【微信號(hào):gh_361ab7628207,微信公眾號(hào):Geant4模擬學(xué)習(xí)交流】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
導(dǎo)入Python庫失敗的缺失庫怎么解決

淺析python導(dǎo)入包引發(fā)的debug緩慢問題
評(píng)論