用于多处理的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?