防止失败的glog CHECK语句终止程序

2024-04-29 08:09:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个C++库,它使用^ {CD1>}{{CD2>}语句来在运行时为各种条件提供资产。如果CHECK失败,glog终止程序。我的Python程序需要从C++库中得到一些函数,所以我为这些函数编写了一个简单的C包装器,并编译了一个DLL,我可以使用^ {CD5}}来加载和使用。

问题是,如果CHECK语句失败,python程序将立即中止,用户将丢失所有未保存的工作!

相反,我希望在python中将库中出错的情况作为异常处理。C++库不是我编写的,改写它不是一个好的解决方案。当从它调用的C++库中,^ {< CD1> }{^


Tags: 函数用户程序check情况语句资产解决方案
1条回答
网友
1楼 · 发布于 2024-04-29 08:09:33

一个快速的解决方案是在单独的进程中运行函数。C++库中的函数很重(1秒),所以这是合理的。在

最小Python 3示例: 在

import ctypes
import multiprocessing

library = ctypes.cdll.LoadLibrary(...)

def RunFunction(params, queue):
    queue.put(library.function(*params))

if __name__ == '__main__': 
    params = ...
    queue = multiprocessing.Queue()
    p = multiprocessing.Process(target=RunFunction, args=(params, queue))
    p.start()
    p.join()
    if p.exitcode == 0:
        print("Function returned: {}".format(queue.get()))
    else:
        print("Non-zero exit code: {}".format(p.exitcode))

相关问题 更多 >