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

Python : call a function and wait for its thread(s) to finish

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

函数

本质上这是我的代码,我通过 运行ning 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 创建的线程完成处理而无需访问此方法的主体来使此更清洁?

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

import threading

def some_callback():
    event.set()

event = threading.Event()
threading.Timer(5, some_callback).start()
event.wait()