【发布时间】:2014-01-25 22:37:43
【问题描述】:
QtWebKit 进程的内存大小随着每次新页面加载而增加。清理内存缓存没有帮助。有人知道怎么解决吗?
这个简单的例子在运行一段时间后崩溃:
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView
from PyQt5.QtWebKit import QWebSettings
class Crawler(QWebView):
def __init__(self):
QWebView.__init__(self)
self.settings().setMaximumPagesInCache(0)
self.settings().setObjectCacheCapacities(0, 0, 0)
self.settings().setOfflineStorageDefaultQuota(0)
self.settings().setOfflineWebApplicationCacheQuota(0)
self.settings().setAttribute(QWebSettings.AutoLoadImages, False)
self.loadFinished.connect(self._result_available)
def start(self):
self.load(QUrl('http://stackoverflow.com/'))
def _result_available(self, ok):
print('got it!')
self.settings().clearMemoryCaches() # it doesn't help
self.settings().clearIconDatabase()
self.start() # next try
if __name__ == '__main__':
app = QApplication([])
crawler = Crawler()
crawler.start()
app.exec_()
【问题讨论】:
-
并非如此。这似乎是 webkit 的一个有点令人费解的“功能”(有关一些讨论,请参阅 here)。一个相当难看的解决方法是定期启动一个新进程,以便系统可以回收内存。
标签: python qt pyqt qtwebkit qwebview