[問題] 如何知道一個 function 牽扯到多少 modul

作者: moodoa3583 (金牌台灣啤酒)   2021-09-07 08:34:54
大家早
最近在拆工作上的一個 package ,當初前人做這個 package 的時候為了能應用在多種情況所以主 module 裡面有很多 function ,也因此也寫了很多輔助的 module 互相 import
不過這麼做的結果就是讓整個程式太肥,現在要做的東西只需要主 module 裡面的其中一個 function ,因此想特別拉出來做成一個新的輕量化程式
在循線找關聯 module / function 這邊花了滿多時間,即使不直接影響主 module 的 module 或 function 也可能會有間接關係,這讓我好奇有沒有某種插件 (我是用 vscode) 可以在執行 package 的某個 function 時自動追蹤牽扯到的 module 和 function ,並且把沒用到的部分註解掉 (這部分可有可無)
以上,如果還有說明不齊的地方再麻煩和我說了,謝謝
作者: supremebboy (1234)   2021-09-07 09:56:00
就是列出目前的 call stack 吧?
作者: moodoa3583 (金牌台灣啤酒)   2021-09-07 10:20:00
噢結果貼上來縮排都跑掉了,除了最後的 go() 之外,def 以下到下一個 def 之前都是縮排
作者: poototo (poototo)   2021-09-07 12:36:00
profile, print_caller?
作者: s0914714 (YA)   2021-09-07 13:21:00
traceback.print_stack()?
作者: moodoa3583 (金牌台灣啤酒)   2021-09-07 17:34:00


感謝各位的回應,試了 print caller (上圖) 和 trackback.print_stack() (下圖) 兩種用法,以結果來說 trackback 比較接近,但這樣必須把 trackback 埋在最源頭的 function 而不是最末端的執行 function (而我是想透過最末端的執行 function 溯源找到所有有牽扯到的 function),以使用上來說有點本末倒置
作者: single4565 (leekdumpling韭菜水餃)   2021-09-07 20:33:00
vsc點function右鍵查看參考?
作者: gmccntzx1 (o.O)   2021-09-07 22:02:00
你有試過 call graph 嗎? 可以找找看 pycallgraph2 看怎麼使用。
作者: lycantrope (阿寬)   2021-09-07 22:08:00
https://docs.python.org/3/library/trace.htmlpython -m trace -t test2.py 之類?沒仔細研究

Links booklink

Contact Us: admin [ a t ] ucptt.com