在python代碼運行期間,有什麼方法可以跟蹤對象的生命週期嗎?我知道關於設置回調函數的sys.settrace函數,我可以停止每個函數調用或代碼行,但在此期間如何訪問「活動」對象?我想跟蹤程序,這樣我可以在每次停止後進行隨機檢查,就好像我真的在停止位置添加了代碼。Python對象生命週期跟蹤
2
A
回答
2
可以通過CPython中的gc(垃圾回收器)模塊完成一些擴展。
Garbage Collector 有使用對象作爲參數一些功能,並可以提供一些信息,有關對象存在:
gc.get_referrers(*objs)
gc.get_referents(*objs)
gc.is_tracked(obj)
只是簡單的檢查對象存在使用「試」作爲described here
+0
儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –
+0
該鏈接被提供給python文檔。事實上,對我來說,評論OP問題會更好,但我還沒有權利這樣做。我會從鏈接粘貼一些信息。 –
相關問題
- 1. 跟蹤對象生命週期
- 2. 跟蹤QStandardItem生命週期
- 3. 升壓Python對象生命週期
- 4. Python對象生命週期特徵
- 5. MEF對象生命週期
- 6. PHP對象生命週期
- 7. 跟蹤片段生命週期一樣Application.ActivityLifecycleCallbacks
- 8. 數據倉庫中的事務生命週期跟蹤
- 9. 套接字對象生命週期
- 10. java中對象的生命週期
- 11. 休眠對象生命週期
- 12. NHibernate中的對象生命週期
- 13. InstancePerLifeTimeScope和對象的生命週期
- 14. 實例化對象生命週期
- 15. Android靜態對象生命週期
- 16. .NET遠程對象的生命週期
- 17. 線程池和對象生命週期
- 18. Lucene.net對象的生命週期?
- 19. C++臨時對象的生命週期
- 20. thread_local和std :: future對象 - 對象的生命週期是什麼?
- 21. C++對象和JavaScript對象的生命週期誤同步
- 22. 如何在ASP應用程序中跟蹤所有ActiveX/COM對象的生命週期?
- 23. 的OpenCV和Python:對象跟蹤和保存對象被跟蹤爲圖像
- 24. .NET對象生命週期\壽命VS非託管代碼
- 25. 跟蹤firstResponder對象
- 26. 由ChannelFactory生成的WCF對象生命週期
- 27. servlet生命週期
- 28. JUnit生命週期
- 29. popToViewController生命週期
- 30. JSF2.0生命週期
不知道你是什麼試圖在這裏實現。你想收集什麼樣的信息? –
例如,在這一步執行傳遞給func'func1'的程序和1行已經在哪個對象創建了某種類型的obj1。我想檢查這個obj1,例如從'dir(obj1)'得到結果或者檢查'obj1'類。 – exbluesbreaker
你不能用'import pdb; pdb.set_trace()'?這給你一個交互式調試器。對象創建本身是不可追蹤的,把痕跡放在它們的'__init__'或'__new__'函數中。 –