ipdb.set_trace()
每当我需要在我的代码中设置断点时,我都会使用它。现在,我正在尝试在使用 创建的进程中使用它multiprocessing
,虽然代码确实停止了,但我无法输入任何内容来继续调试。有什么办法可以让我得到stdin
正确的指导吗?
理想情况下,我想想象每次停止分叉进程进行调试时都会打开一个新控制台,但是我认为这是不可能的。
ipdb.set_trace()
每当我需要在我的代码中设置断点时,我都会使用它。现在,我正在尝试在使用 创建的进程中使用它multiprocessing
,虽然代码确实停止了,但我无法输入任何内容来继续调试。有什么办法可以让我得到stdin
正确的指导吗?
理想情况下,我想想象每次停止分叉进程进行调试时都会打开一个新控制台,但是我认为这是不可能的。
有时用于调试您可以更改代码以使用multiprocessing.dummy。这样,不会进行分叉,它将与线程一起使用并且更易于调试。
稍后(在修复错误之后......)您可以切换回多处理
multiprocessing.dummy - 应该提供与 multiprocessing 相同的 API,以便轻松更改...
根据如何将调试器附加到 python 子进程?, http://winpdb.org支持multiprocessing
调试。
如果您更喜欢做更多的工作以获得更大的灵活性,那么https://gist.github.com/csabahenk/6497709有一些有趣的想法(这里太长了,无法包含)。