我现在正在开发一个使用 PyQt5 和 CFFI 绑定到 libgphoto2 的 Python 应用程序。
我有这部分代码,它将每 1/60 秒轮询一次相机以获取预览图像,然后安排在屏幕上绘制它。
def showPreview(self):
# Do we have a camera loaded at the moment?
if self.camera:
try:
# get data from the camera & turn it into a pixmap
self.__buffer = self.camera.getPreview().scaled(self.size(), Qt.KeepAspectRatio) # Scale it
# Schedule a redraw
self.update()
# Setup another show preview in 1/60 of a second
QTimer.singleShot(1000 // 60, self.showPreview)
except GPhoto2Error as e:
# Ignore any errors from libgphoto2
pass
该getPreview()
方法返回一个QImage
类型。
当我使用连接到我的应用程序的相机运行此程序时,我注意到我的系统的内存使用量不断增加。是的,我已经运行了大约 10 分钟。它开始时的使用率为 0.5%,现在已接近 20%。
如果我错了,请纠正我,但 Python 的 GC 不应该启动并摆脱旧QImage
对象。我怀疑他们逗留的时间超过了应有的时间。