pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

  1. <i id='z83DC'><tr id='z83DC'><dt id='z83DC'><q id='z83DC'><span id='z83DC'><b id='z83DC'><form id='z83DC'><ins id='z83DC'></ins><ul id='z83DC'></ul><sub id='z83DC'></sub></form><legend id='z83DC'></legend><bdo id='z83DC'><pre id='z83DC'><center id='z83DC'></center></pre></bdo></b><th id='z83DC'></th></span></q></dt></tr></i><div class="fh7rtbn" id='z83DC'><tfoot id='z83DC'></tfoot><dl id='z83DC'><fieldset id='z83DC'></fieldset></dl></div>
  2. <tfoot id='z83DC'></tfoot>

      <bdo id='z83DC'></bdo><ul id='z83DC'></ul>

    1. <small id='z83DC'></small><noframes id='z83DC'>

      <legend id='z83DC'><style id='z83DC'><dir id='z83DC'><q id='z83DC'></q></dir></style></legend>

      從 python 調試器將變量保存到交互式命名空間

      save variable to interactive namespace from python debugger(從 python 調試器將變量保存到交互式命名空間)
        <bdo id='KeMcN'></bdo><ul id='KeMcN'></ul>
          <i id='KeMcN'><tr id='KeMcN'><dt id='KeMcN'><q id='KeMcN'><span id='KeMcN'><b id='KeMcN'><form id='KeMcN'><ins id='KeMcN'></ins><ul id='KeMcN'></ul><sub id='KeMcN'></sub></form><legend id='KeMcN'></legend><bdo id='KeMcN'><pre id='KeMcN'><center id='KeMcN'></center></pre></bdo></b><th id='KeMcN'></th></span></q></dt></tr></i><div class="lzzpjfl" id='KeMcN'><tfoot id='KeMcN'></tfoot><dl id='KeMcN'><fieldset id='KeMcN'></fieldset></dl></div>
          <legend id='KeMcN'><style id='KeMcN'><dir id='KeMcN'><q id='KeMcN'></q></dir></style></legend>
            <tbody id='KeMcN'></tbody>

            <small id='KeMcN'></small><noframes id='KeMcN'>

                <tfoot id='KeMcN'></tfoot>
              1. 本文介紹了從 python 調試器將變量保存到交互式命名空間的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                當我在交互式會話中運行時(在我的例子中是 ipython),并且當前在調試器中(ipdbpdb)我希望能夠從調試命名空間中將變量放入主交互式命名空間.

                When I am running inside an interactive session (in my case ipython), and am currently inside a debugger (ipdb or pdb) I would like to be able to put a variable into the main interactive namespace from within the debugging namespace.

                這在我的代碼崩潰但已經完成大量工作時很有用,其中一些可以挽救以節省時間(例如,從磁盤加載數據).

                This is useful if my code crashes, but has already done significant work, some of which is salvageable to save time (for example, loading data from disk).

                所以我想要的是這樣的,例如:

                so what I'd like is something like this, for example:

                >>> run -m my.module
                loading data from disk...
                done loading data.
                processing data...
                ---------------------------------------------------------------------------
                IndexError                                Traceback (most recent call last)
                ...
                

                -> 這里在處理過程中出了點問題,但是數據的加載工作正常......所以我會進入調試器檢查發生了什么,并查看 loaded_data:

                -> here something goes wrong during processing, but the loading of data worked fine... so I'd go into the debugger to check out what happened, and to see the loaded_data:

                >>> debug
                ipdb> len(loaded_data)
                100000
                

                -> 然后我希望能夠將此變量保存到交互式命名空間中,以便在調試器外部使用,如下所示:

                -> Then I would like to be able to save this variable to the interactive namespace for use outside the debugger, like so:

                ipdb> save_to_interactive('loaded_data')
                ipdb> exit
                >>> len(loaded_data)
                100000
                

                推薦答案

                您可以通過獲取對外部解釋器堆棧的引用來完成此操作框架,并寫入其框架全局變量.

                You can accomplish this by getting a reference to the outer interpreter's stack frame, and writing to its frame globals.

                給定一個帶有斷點的示例模塊,將我們踢到 pdb:

                Given a sample module with a breakpoint that kicks us into pdb:

                my_module.py:

                def fun(arg):
                    import pdb; pdb.set_trace()
                    print arg
                

                演示基本概念的示例:

                    >>> import my_module
                    >>> my_module.fun(1)
                    > /Users/lukasgraf/src/stackoverflow/my_module.py(3)fun()
                    -> print arg
                    (Pdb) import sys
                    (Pdb) sys._getframe(0)
                    <frame object at 0x1032ab290>
                    # this is the current frame
                
                    (Pdb) sys._getframe(0).f_globals['__name__']
                    'my_module'
                
                    # Next outer frame
                    (Pdb) sys._getframe(1).f_globals['__name__']
                    'pdb'
                
                    # etc...
                
                    # In this example, frame 10 happens to be
                    # the one from the outer interpreter
                    (Pdb) sys._getframe(10).f_globals['__name__']
                    '__main__'
                

                所以這里有一個快速而骯臟的函數,它在堆棧中查找 '__name__',在幀全局變量中具有 '__main__' 的值:

                So here's a quick and dirty function that walks up the stack looking for '__name__' with a value of '__main__' in frame globals:

                debughelper.py:

                import sys
                
                # Be safe and define a maximum of frames we're trying to walk up
                MAX_FRAMES = 20
                
                def save_to_interactive(dct):
                    n = 0
                    # Walk up the stack looking for '__name__'
                    # with a value of '__main__' in frame globals
                    for n in range(MAX_FRAMES):
                        cur_frame = sys._getframe(n)
                        name = cur_frame.f_globals.get('__name__')
                        if name == '__main__':
                            # Yay - we're in the stack frame of the interactive interpreter!
                            # So we update its frame globals with the dict containing our data
                            cur_frame.f_globals.update(dct)
                            break
                

                用法:

                >>> import my_module
                >>> my_module.fun('foo')
                > /Users/lukasgraf/src/stackoverflow/my_module.py(3)fun()
                -> print arg
                (Pdb) import debughelper
                (Pdb) debughelper.save_to_interactive({'mykey': 42})
                (Pdb) c
                foo
                # We continued PDB, so we're in the outer interpreter again
                >>> print mykey
                42
                >>>
                

                這篇關于從 python 調試器將變量保存到交互式命名空間的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                相關文檔推薦

                python: Two modules and classes with the same name under different packages(python:不同包下同名的兩個模塊和類)
                Configuring Python to use additional locations for site-packages(配置 Python 以使用站點包的其他位置)
                How to structure python packages without repeating top level name for import(如何在不重復導入頂級名稱的情況下構造python包)
                Install python packages on OpenShift(在 OpenShift 上安裝 python 包)
                How to refresh sys.path?(如何刷新 sys.path?)
                Distribute a Python package with a compiled dynamic shared library(分發帶有已編譯動態共享庫的 Python 包)

                  1. <tfoot id='Mbhte'></tfoot>
                    • <small id='Mbhte'></small><noframes id='Mbhte'>

                      <i id='Mbhte'><tr id='Mbhte'><dt id='Mbhte'><q id='Mbhte'><span id='Mbhte'><b id='Mbhte'><form id='Mbhte'><ins id='Mbhte'></ins><ul id='Mbhte'></ul><sub id='Mbhte'></sub></form><legend id='Mbhte'></legend><bdo id='Mbhte'><pre id='Mbhte'><center id='Mbhte'></center></pre></bdo></b><th id='Mbhte'></th></span></q></dt></tr></i><div class="57z77f5" id='Mbhte'><tfoot id='Mbhte'></tfoot><dl id='Mbhte'><fieldset id='Mbhte'></fieldset></dl></div>
                        <tbody id='Mbhte'></tbody>
                        <bdo id='Mbhte'></bdo><ul id='Mbhte'></ul>
                          <legend id='Mbhte'><style id='Mbhte'><dir id='Mbhte'><q id='Mbhte'></q></dir></style></legend>
                        1. 主站蜘蛛池模板: 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 无锡网站建设_企业网站定制-网站制作公司-阿凡达网络 | 高压直流电源_特种变压器_变压器铁芯-希恩变压器定制厂家 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 据信,上课带着跳 D 体验-别样的课堂刺激感受引发网友热议 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书| 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 汝成内控-行政事业单位内部控制管理服务商 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 智慧食堂_食堂管理系统_食堂订餐_食堂消费系统—客易捷 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 空气能暖气片,暖气片厂家,山东暖气片,临沂暖气片-临沂永超暖通设备有限公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 陕西鹏展科技有限公司| 全自动不干胶贴标机_套标机-上海今昂贴标机生产厂家 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 市政路灯_厂家-淄博信达电力科技有限公司| 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 湖南教师资格网-湖南教师资格证考试网 | 烟台金蝶财务软件,烟台网站建设,烟台网络推广 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 粘度计,数显粘度计,指针旋转粘度计 |