hab folgendes Testprogram:
Code: Alles auswählen
import zipfile
import itertools
def main():
with zipfile.ZipFile("test.zip", mode='w', compression=zipfile.ZIP_LZMA) as file_zip:
for x in itertools.count():
b = str(x)
print(b)
file_zip.writestr(b, b)
if __name__ == "__main__":
main()
MMn. liegt das daran, dass die writes gebuffert werden. Soweit so gut.
Leider fällt der Speicherbedarf aber nicht auf den initalien Wert ab sondern wächst mit der Zeit mit.
Das heißt, dass dieses Programm nach einer gewissen Zeit meinen gesamten Ram benötigt und deshalb mit einem Memory Error beendet wird.
Meine Frage ist nun: Wie verhindere ich das? Ich hätte erwartet, dass es einen konstanten Buffer für das schreiben gibt und nicht, dass anscheinend auch teile des Gezippten irgendwo im Ram weite rumliegen.
MfG.
p90