所以,我有一些这样的代码:
class ProgressProc(multiprocessing.Process):
def __init__(self):
multiprocessing.Process.__init__(self)
def run(self):
while True:
markProgress()
time.sleep(10)
progressProc = ProgressProc()
progressProc.start()
doSomething()
progressProc.terminate()
问题是,如果我在 doSomething() 函数中执行 pdb.set_trace(),ProgressProc 进程会继续进行。在 pdb 提示符处于活动状态时,它会不断将内容打印到控制台。我想要的是让 ProgressProc 有一些方法来检查主线程(实际上,任何其他线程)是否在 pdb 中暂停,然后我可以跳过 markProgress()。
有 sys.gettrace(),但这仅适用于执行 pdb.set_trace() 的线程,我不知道如何在与我所在的线程不同的线程上调用它。我还能做什么? 我能捕捉到任何信号吗?我可以让我的主要方法替换 pdb.set_trace 以首先调用一些 multiprocessing.Event 。有没有更清洁的方法?
ETA:这也适用于 python gdb 命令。