gpt4 book ai didi

c++ - pythonqt 对数百万对象的可扩展性

转载 作者:行者123 更新时间:2023-11-30 04:34:06 26 4
gpt4 key购买 nike

我正在考虑将 pythonqt 添加到我的应用程序中以编写插件。我的应用程序是用 C++ 编写的,并且已经使用了 Qt 框架。 pythonqt 选项似乎很适合添加 GUI 组件,但我担心如果我公开一个具有数百万个实例的类,程序的扩展性如何。在内存中有一百万个某种类型的对象并不少见,我想确保 pythonqt 能够公开这些对象而无需将它们变成 QObjects。我想这可能很好,但在我开始之前,我想知道使用 pythonqt 公开如此大量的类是否可行,以及是否有人有将它扩展到这么多的经验。

从这个链接 (http://pythonqt.sourceforge.net/Developer.html) 看来,装饰器实际上只是根据要求将它们加载到 python/Qt 中。我只是不希望 Qt 无缘无故地试图跟踪这数百万个对象而占用更大的内存。

最佳答案

PythonQt 只为暴露给 Python 的 C++ 实例创建 Python 包装器。因此,如果您不同时向 Python 公开数百万个 C++ 实例,它将很好地扩展并仅为暴露的对象创建包装器。这些包装器在超出 Python 范围时会被删除,因此这也应该可以扩展。

包装 C++ 对象的最佳方法是为每个 C++ 类注册装饰器 QObject 派生类,这允许注册许多类而无需实际创建/评估装饰器,直到该类型的类对 Python 可见为止。看看 Qt 包装器,例如PythonQtWrapper_QImage,看看这样的装饰器长什么样,是怎么注册的。

关于c++ - pythonqt 对数百万对象的可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com