首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pythonqt对数百万对象的可伸缩性

pythonqt对数百万对象的可伸缩性
EN

Stack Overflow用户
提问于 2011-05-31 05:35:28
回答 2查看 307关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-31 10:35:19

我没有做太多的工作,但听起来你至少应该看看QtQuick/QML层。从你的描述中很难看出到底是怎么回事,但是QML是一种不需要进行任何C++编码就可以编写Qt的方法。它建立在已经存在且工作良好的Qt/JavaScript实现和Bridge之上。

至于将类的实例暴露给脚本语言,这通常取决于桥的实现。虽然通常会涉及一些代码,但您可能不会在每个实例中产生这些代码,或者它可能会延迟实例化到一个点,即您只有比内存中保存的原始实例少得多的数百万个包装的实例。

票数 0
EN

Stack Overflow用户

发布于 2012-04-27 17:31:07

PythonQt仅为公开给Python的C++实例创建Python包装器。因此,如果您不同时向Python公开数百万个C++实例,它将很好地扩展,并且只为公开的对象创建包装器。当这些包装器超出Python的作用域时会被删除,因此这也应该进行扩展。

包装C++对象的最好方法是为每个QObject类注册一个装饰器Python派生类,这允许注册许多类,而无需实际创建/计算装饰器,直到该类型的类对C++可见为止。看看Qt包装器,例如PythonQtWrapper_QImage,看看这样的装饰器是什么样子的,以及它是如何注册的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6180947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档