用于多处理的python调试工具

我有一个python脚本,可以与线程,进程和数据库连接一起工作。 当我运行我的脚本时,python崩溃。

我无法明确地检测到发生这种情况的情况。

现在我正在寻找工具在python崩溃时获取更多信息,或者查看器查看我创建的所有进程/连接。


我创建了一个RemoteException.py模块,该模块显示了进程中异常的完整回溯。 Python2。 下载并将其添加到您的代码中:

import RemoteException

@RemoteException.showError
def go():
    raise Exception('Error!')

if __name__ == '__main__':
    import multiprocessing
    p = multiprocessing.Pool(processes = 1)
    r = p.apply(go) # full traceback is shown here

老解答

我也有这个问题。

这就是我所做的...... RemoteException调试多处理调用

RemoteException.py

复制源代码并删除第19行: file.write('nin %s ' % (Process.thisProcess,))和行import Process

问题是:多处理只传输异常但丢失了回溯。 下面的代码创建一个保存回溯的Exception对象。 并将其打印在调用过程中。

在你的脚本中,你可以做这样的事情:

import RemoteException

def f():
    try:
        # here is code that fails but you do know not where
        pass
    except:
        ty, err, tb = RemoteException.exc_info() # like sys.exc_info but with better message
        raise ty, err, tb

# here follows your multiprocessing call to f

我不知道你的情况,但如果你使用线程或多处理,那么你的代码适用于并行处理(通常)。 在困难的情况下,我只会调用没有池的函数,捕获错误,然后再次进入池。


有一个名为WinPDB的图形调试器,可以让您选择遵循特定的Python过程。 您可以浏览并查看调用堆栈中不同位置的所有变量。

它让您可以选择在分岔时遵循哪个流程。

它甚至会捕获最终的异常,并允许您查看其起源。

http://winpdb.org/

链接地址: http://www.djcxy.com/p/66481.html

上一篇: python debug tools for multiprocessing

下一篇: How to render a Meteor Template from Collection of Template names?