Python:调用函数并等待其线程完成

问题描述 投票:0回答:1

我正在使用Python编写gdb会话脚本。我的目标是使用gdb.events.stop.connect在遇到断点时运行一个函数。

本质上是我的代码,我通过运行source main.py从gdb调用:

RESULT = None


def breakpoint_handler(event):
    global RESULT
    RESULT = do_something(event)  # boolean
    sleep(1)


def main():
    global RESULT
    gdb.events.stop.connect(breakpoint_handler)
    command = "some gdb command"
    gdb.execute(command)
    sleep(1)
    if RESULT:
        # do something
        pass
    else:
        # something else
        pass

main()

此代码有效,但仅感谢sleep调用,它试图确保gdb.execute(command)调用在继续之前确实完成了gdb命令的执行。文献很少,但我猜想该函数是线程化的,这说明了wait作为修复程序的有效性。

是否有一种方法可以通过等待gdb.execute创建的线程来完成处理,而无需访问此方法的主体,从而使它更清洁?

我正在使用Python编写gdb会话脚本。我的目标是使用gdb.events.stop.connect在遇到断点时运行一个函数。这实际上是我的代码,我通过运行...

python gdb python-multithreading
1个回答
1
投票

您可以在回调中设置一个事件,然后在主线程中等待它。这是一个示例,其中计时器在5秒钟后调用了回调:

© www.soinside.com 2019 - 2024. All rights reserved.