当前位置: 首页 > 知识库问答 >
问题:

如何关联IPython回调()

司马宏邈
2023-03-14

在IPython终端中,我希望main()中的一个函数返回到IPython中,在这里我可以像往常一样打印、设置…,然后继续运行main():

IPython
    run main.py
    ...
    def callback( *args ):
        ...
        try:
            back_to_ipython()  # <-- how to do this ?
                In[]: print, set *args ...
                ...
        except KeyboardInterrupt:  # or IPython magic
            pass

        return  # from callback(), keep running main()

这必须在Python2中运行。

(callback的名称可以是任何东西,但我的用例是scipy.optimize->callback。也许是某个聪明的scipy人做的?)

# http://stackoverflow.com/questions/39946052/how-to-coroutine-ipython-a-callback

import sys
from IPython import __version__
from IPython import embed  # $site/IPython/terminal/embed.py
from IPython.terminal.ipapp import load_default_config

print "versions: IPython %s  python %s" % (
        __version__, sys.version.split()[0] )

def pdict( header, adict ):
    print header
    for k, v in sorted( adict.items() ):
        print "%s\t: %s" % (k, v)

config = load_default_config()
pdict( "load_default_config:", config )

aglobal = [3]

#...............................................................................
def callback( adict ):
    # pdict( "callback:", adict )
    t = adict["t"]
    x = 3
    embed( header="callback: t %d" % t )
        # interact: print t x ...
        # ^D / EOF
    return

def aloop( *args ):
    for t in range( 3 ):
        callback( locals() )

aloop( 1, 2, 3 )  # works in "run this.py"
# but typing "aloop()" in an IPython terminal ->
# embed.py:218: UserWarning: Failed to get module unknown module
#  global_ns.get('__name__', 'unknown module')

共有1个答案

程鸿煊
2023-03-14

您可以插入断点,这将给出类似的结果:

import pdb; pdb.set_trace()

https://docs.python.org/3.6/library/pdb.html

此处可供选择(iPython中的embed()函数):使用iPython进行逐步调试

 类似资料:
  • 问题内容: 如何正确关闭IPython Notebook? 目前,我只是关闭浏览器选项卡,然后在终端中使用。 不幸的是,滴答也无济于事(它们确实杀死了它们的内核,但没有退出iPython)。 问题答案: 当前没有比终端中的Ctrl + C更好的方法了。 我们正在考虑如何进行显式关机,但是笔记本作为单用户应用程序(用户可以自由停止它)和作为多用户服务器(只能由管理员操作)之间存在一些紧张关系。阻止它

  • 问题内容: 我试图在MacOS X上使用带有Python 2.7.2和的。 我无法获得matplotlib图形来内联显示。 我也试过了和ipython命令行参数,–但这没什么区别。 我得到的不是内联图形,而是: 并表明我有后端。 问题答案: 我在笔记本的第一个单元中使用了它,并且可以正常工作。我认为你应该尝试: 通过在配置文件中设置以下配置选项,默认情况下,你也始终可以始终默认以内联模式启动所有I

  • 我正在从前端向后端中的路由发出请求,该路由正在验证与用户关联的令牌,如果令牌已过期,则会将错误响应发送回前端。我正在发送一些,但是在执行捕获块中的错误消息,未显示沿错误响应发送的json。 像这样发送错误响应 但是我在前端的 catch 块中得到的响应没有收到错误时发送的 json 的迹象。 岗位http://localhost:3001/check-验证401(未经授权)错误:请求失败,在XML

  • 一个user有多个tel,是一对多的关系,现在我只需要查最新的一条即可,没必要把tel全查出来,应该怎么写?

  • 关联规则:关联规则反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。Apriori算法利用频繁项集生成关联规则。它基于频繁项集的子集也必须是频繁项集的概念。频繁项集是支持值大于阈值(support)的项集。

  • 有一个关联数组: 我已经使用从另一个对象(获取属性名。 由此我得到了以下输出: 这里的键不按顺序排列。而是另一个关联数组。 但是得到了空数组作为输出。 我如何返回主大关联数组只与键名称我得到它与?如何返回主数组(500项)与项目,只匹配某些键?