Итак, у меня есть такой код:
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()
Проблема в том, что если я делаю pdb.set_trace() внутри функции doSomething(), процесс ProgressProc продолжает работать. Он продолжает выводить данные на консоль, пока активно приглашение pdb. Я хотел бы, чтобы ProgressProc каким-то образом проверял, приостановлен ли основной поток (на самом деле, любой другой поток) в pdb, и тогда я могу пропустить markProgress().
Есть sys.gettrace(), но он работает только для потока, который выполнил pdb.set_trace(), и я не могу понять, как вызвать его в другом потоке, отличном от того, в котором я нахожусь. Что еще я могу сделать ? Есть ли какие-то сигналы, которые я могу поймать? Я мог бы заменить мой основной метод pdb.set_trace, чтобы сначала вызвать некоторый multiprocessing.Event. Есть ли более чистый способ?
ETA: это также для команды python gdb.