Die Speichergröße des QtWebKit-Prozesses nimmt mit jeder neuen Seitenladung zu. Cleaning Memory Cache hilft nicht. Weiß jemand, wie man es löst?Gibt es eine Lösung für das QtWebKit Speicherleck?
Dieses einfache Beispiel stürzt nach einiger Betriebszeit:
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_()
nicht wirklich zu erhöhen. Es scheint ein etwas verwirrendes "Feature" von webkit zu sein (siehe [hier] (http://qt-project.org/forums/viewthread/11105) für einige Diskussionen). Eine ziemlich hässliche Problemumgehung besteht darin, regelmäßig einen neuen Prozess zu starten, so dass das System den Speicher zurückfordern kann. – ekhumoro